chore(appium): use two GH runners to run chats tests on macos #1
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: UI Tests on Windows only π§ͺ | |
on: | |
schedule: | |
- cron: "0 0/6 * * 1-5" | |
pull_request: | |
types: [opened, synchronize, reopened, edited] | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
CARGO_TERM_COLOR: always | |
jobs: | |
build-windows: | |
runs-on: | |
labels: windows-latest | |
steps: | |
- name: Checkout testing directory π | |
uses: actions/checkout@v3 | |
with: | |
repository: Satellite-im/Uplink | |
- name: Install Rust πΏ | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: 1.70.0 | |
override: true | |
components: rustfmt, clippy | |
- name: Build executable π₯οΈ | |
run: cargo build --release -F production_mode | |
continue-on-error: true | |
- name: Create ZIP archive on Windows π³οΈ | |
run: Compress-Archive -Path target/release/uplink.exe -Destination uplinkWindows.zip | |
- name: Copy Extensions π³οΈ | |
run: | | |
mkdir ./ui/extra/extensions | |
cp -r ./target/release/emoji_selector.d ./ui/extra/extensions/ | |
cp -r ./target/release/emoji_selector.dll ./ui/extra/extensions/ | |
cp -r ./target/release/emoji_selector.dll.exp ./ui/extra/extensions/ | |
cp -r ./target/release/emoji_selector.dll.lib ./ui/extra/extensions/ | |
cp -r ./target/release/emoji_selector.pdb ./ui/extra/extensions/ | |
- name: Upload Executable β¬οΈ | |
uses: actions/upload-artifact@v3 | |
with: | |
name: Uplink-windows-latest | |
path: uplinkWindows.zip | |
- name: Upload Windows Assets | |
uses: actions/upload-artifact@v3 | |
with: | |
name: uplink-windows-assets | |
path: | | |
ui/extra/images/ | |
ui/extra/prism_langs/ | |
ui/extra/themes/ | |
ui/extra/extensions/ | |
- name: Add label if any of build jobs failed | |
if: failure() | |
uses: buildsville/[email protected] | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
labels: | | |
Failed Automated Test | |
type: add | |
test-windows-chats: | |
needs: build-windows | |
runs-on: windows-latest | |
steps: | |
- name: Checkout testing directory π | |
uses: actions/checkout@v3 | |
- name: Change resolution on Windows Runner | |
run: Set-DisplayResolution -Width 1920 -Height 1080 -Force | |
shell: powershell | |
- name: Download the Windows app π³οΈ | |
uses: actions/download-artifact@v3 | |
with: | |
name: Uplink-windows-latest | |
path: ./apps | |
- name: Extract .zip into apps Directory π³οΈ | |
run: Expand-Archive -Path ./apps/uplinkWindows.zip -DestinationPath ./apps | |
- name: Download the Windows app assets | |
uses: actions/download-artifact@v3 | |
with: | |
name: uplink-windows-assets | |
path: ./apps | |
- name: Copy app to have two instances πΏ | |
working-directory: ./apps | |
run: | | |
cp -r ./uplink.exe ./uplink2.exe | |
- name: Move Windows assets to correct locations πΏ | |
working-directory: ./apps | |
run: | | |
mkdir ./bin/extra | |
mkdir ./extra | |
mv ./uplink.exe ./bin/ | |
mv ./uplink2.exe ./bin/ | |
mv ./images/ ./bin/extra/ | |
mv ./prism_langs/ ./bin/extra/ | |
mv ./themes/ ./extra/ | |
- name: Setup Node.js π¨ | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
cache: "npm" | |
- name: Cache NPM dependencies π¨ | |
uses: actions/cache@v3 | |
id: cache-windows-chats | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }} | |
- name: Install NPM dependencies π¦ | |
if: steps.cache-windows-chats.outputs.cache-hit != 'true' | |
run: npm ci | |
- name: Install Appium Server π» | |
run: | | |
npm install -g appium@next | |
appium -v | |
- name: Install Appium Driver π» | |
run: | | |
appium driver install --source=npm appium-windows-driver | |
appium driver list | |
- name: Setup FFMPEG to record screen | |
uses: FedericoCarboni/setup-ffmpeg@v2 | |
id: setup-ffmpeg | |
- name: Delete Cache Folder if exists - Windows | |
run: If (Test-Path $home/.uplink/.user) {Remove-Item -Recurse -Force $home/.uplink/.user} Else { Break } | |
shell: powershell | |
- name: Run Chat Tests on Windows π§ͺ | |
run: npm run windows.multiremote | |
- name: Upload Test Report - Windows Chats | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: test-report-windows-chats | |
path: ./test-report/*.xml | |
- name: Upload Allure Test Results | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: test-allure-windows-chats | |
path: ./allure-results/ | |
- name: Upload Screenshots for Windows - Chats π· | |
uses: actions/upload-artifact@v3 | |
if: failure() | |
with: | |
name: appium-screenshots-windows-chats | |
path: ./test-results | |
- name: Upload Appium Log for Windows - Chats π· | |
uses: actions/upload-artifact@v3 | |
if: failure() | |
with: | |
name: appium-log-windows-chats | |
path: | | |
./appium.log | |
- name: Add label if any of test jobs failed | |
if: failure() | |
uses: buildsville/[email protected] | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
labels: | | |
Failed Automated Test | |
type: add | |
test-windows: | |
needs: build-windows | |
runs-on: windows-latest | |
steps: | |
- name: Checkout testing directory π | |
uses: actions/checkout@v3 | |
- name: Change resolution on Windows Runner | |
run: Set-DisplayResolution -Width 1920 -Height 1080 -Force | |
shell: powershell | |
- name: Download the Windows app π³οΈ | |
uses: actions/download-artifact@v3 | |
with: | |
name: Uplink-windows-latest | |
path: ./apps | |
- name: Extract .zip into apps Directory π³οΈ | |
run: Expand-Archive -Path ./apps/uplinkWindows.zip -DestinationPath ./apps | |
- name: Download the Windows app assets | |
uses: actions/download-artifact@v3 | |
with: | |
name: uplink-windows-assets | |
path: ./apps | |
- name: Move Windows assets to correct locations πΏ | |
working-directory: ./apps | |
run: | | |
mkdir ./bin/extra | |
mkdir ./extra | |
mv ./uplink.exe ./bin/ | |
mv ./images/ ./bin/extra/ | |
mv ./prism_langs/ ./bin/extra/ | |
mv ./themes/ ./extra/ | |
- name: Setup Node.js π¨ | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
cache: "npm" | |
- name: Cache NPM dependencies π¨ | |
uses: actions/cache@v3 | |
id: cache-windows | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }} | |
- name: Install NPM dependencies π¦ | |
if: steps.cache-windows.outputs.cache-hit != 'true' | |
run: npm ci | |
- name: Install and Run Appium Server π» | |
run: | | |
npm install -g appium@next | |
appium -v | |
- name: Install Appium Driver π» | |
run: | | |
appium driver install --source=npm appium-windows-driver | |
appium driver list | |
- name: Setup FFMPEG to record screen | |
uses: FedericoCarboni/setup-ffmpeg@v2 | |
id: setup-ffmpeg | |
- name: Delete Cache Folder if exists - Windows | |
run: If (Test-Path $home/.uplink/.user) {Remove-Item -Recurse -Force $home/.uplink/.user} Else { Break } | |
shell: powershell | |
- name: Run Tests on Windows π§ͺ | |
id: test-execution-windows | |
run: npm run windows.ci | |
- name: Upload Test Report - Windows CI | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: test-report-windows-ci | |
path: ./test-report/*.xml | |
- name: Upload Allure Test Results | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: test-allure-windows-ci | |
path: ./allure-results/ | |
- name: Upload Screenshots for Windows π· | |
uses: actions/upload-artifact@v3 | |
if: failure() | |
with: | |
name: appium-screenshots-windows | |
path: ./test-results | |
- name: Upload Appium Log for Windows π· | |
uses: actions/upload-artifact@v3 | |
if: failure() | |
with: | |
name: appium-log-windows | |
path: ./appium.log | |
- name: Add label if any of test jobs failed | |
if: failure() | |
uses: buildsville/[email protected] | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
labels: | | |
Failed Automated Test | |
type: add | |
publish-test-results: | |
if: always() | |
needs: | |
#[build-mac, build-windows, test-mac, test-mac-chats, test-windows-chats, test-windows] | |
[build-windows, test-windows-chats, test-windows] | |
runs-on: ubuntu-latest | |
permissions: | |
checks: write | |
pull-requests: write | |
contents: write | |
issues: read | |
steps: | |
#- name: Download Test Report for MacOS CI | |
# uses: actions/download-artifact@v3 | |
# with: | |
# name: test-report-macos-ci | |
# path: artifacts | |
#- name: Download Test Report for MacOS Chat A | |
# uses: actions/download-artifact@v3 | |
# with: | |
# name: test-report-macos-chatA | |
# path: artifacts | |
#- name: Download Test Report for MacOS Chat B | |
# uses: actions/download-artifact@v3 | |
# with: | |
# name: test-report-macos-chatB | |
# path: artifacts | |
- name: Download Test Report for Windows Chats | |
uses: actions/download-artifact@v3 | |
with: | |
name: test-report-windows-chats | |
path: artifacts | |
- name: Download Test Report for Windows CI | |
uses: actions/download-artifact@v3 | |
with: | |
name: test-report-windows-ci | |
path: artifacts | |
#- name: Download Allure Results for MacOS CI | |
# uses: actions/download-artifact@v3 | |
# with: | |
# name: test-allure-mac-ci | |
# path: allure | |
#- name: Download Allure Results for MacOS Chat A | |
# uses: actions/download-artifact@v3 | |
# with: | |
# name: test-allure-mac-chatA | |
# path: allure | |
#- name: Download Allure Results for MacOS Chat B | |
# uses: actions/download-artifact@v3 | |
# with: | |
# name: test-allure-mac-chatB | |
# path: allure | |
- name: Download Allure Results for Windows CI | |
uses: actions/download-artifact@v3 | |
with: | |
name: test-allure-windows-ci | |
path: allure | |
- name: Download Allure Results for Windows Chats | |
uses: actions/download-artifact@v3 | |
with: | |
name: test-allure-windows-chats | |
path: allure | |
- name: Publish Test Results for Tests | |
uses: EnricoMi/publish-unit-test-result-action/composite@v2 | |
if: success() | |
with: | |
junit_files: "artifacts/**/*.xml" | |
ignore_runs: true | |
job_summary: false | |
compare_to_earlier_commit: false | |
check_name: "UI Automated Test Results Summary for MacOS/Windows" | |
- name: Get Allure history | |
uses: actions/checkout@v3 | |
if: success() | |
continue-on-error: true | |
with: | |
ref: gh-pages | |
path: gh-pages | |
- name: Allure Report action from marketplace | |
uses: simple-elf/allure-report-action@master | |
if: success() | |
id: allure-report | |
with: | |
gh_pages: gh-pages | |
allure_results: allure | |
allure_report: allure-report | |
allure_history: allure-history | |
keep_reports: 20 | |
- name: Deploy report to Github Pages | |
if: success() | |
uses: peaceiris/actions-gh-pages@v3 | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
publish_branch: gh-pages | |
publish_dir: allure-history | |
- name: Comment PR with the Test Results | |
if: success() | |
uses: mshick/add-pr-comment@v2 | |
with: | |
message: | | |
UI Automated Tests execution is complete! You can find the test results report [here](https://satellite-im.github.io/testing-uplink/${{ github.run_number }}) | |
remove-artifacts: | |
needs: | |
[ | |
build-windows, | |
test-windows-chats, | |
test-windows, | |
publish-test-results, | |
] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout testing directory π | |
uses: actions/checkout@v3 | |
- name: Remove label if all test jobs succeeded | |
uses: buildsville/[email protected] | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
labels: | | |
Failed Automated Test | |
type: remove | |
- name: Delete artifacts | |
uses: geekyeggo/delete-artifact@v2 | |
with: | |
name: | | |
Uplink-windows-latest | |
test-report-windows-chats | |
test-report-windows-ci | |
test-allure-windows-chats | |
test-allure-windows-ci |