Skip to content

chore(appium): use two GH runners to run chats tests on macos #8

chore(appium): use two GH runners to run chats tests on macos

chore(appium): use two GH runners to run chats tests on macos #8

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