diff --git a/.github/workflows/ui-automated-tests.yml b/.github/workflows/ui-automated-tests.yml index 91704b70b1..c7d6334490 100644 --- a/.github/workflows/ui-automated-tests.yml +++ b/.github/workflows/ui-automated-tests.yml @@ -25,118 +25,7 @@ env: CARGO_TERM_COLOR: always jobs: - create-node: - runs-on: ubuntu-latest - steps: - - name: Checkout Warp directory ๐Ÿ”– - uses: actions/checkout@v4 - with: - repository: Satellite-im/Warp - ref: b574da4ab10cfd7bf38ec0e2b499232a2e8f8eff - - - name: Set up cargo cache ๐Ÿ› ๏ธ - uses: Swatinem/rust-cache@v2 - - - name: Install Rust ๐Ÿ’ฟ - uses: actions-rs/toolchain@v1 - with: - toolchain: 1.75.0 - override: true - components: rustfmt, clippy - - - name: Run cargo build shuttle on Warp ๐Ÿš€ - run: cargo build --bin shuttle --release - - - name: Launch CI instance of Warp ๐Ÿš€ - run: ./target/release/shuttle --keyfile key.bin --listen-addr /ip4/127.0.0.1/tcp/4444 > peerID.txt & - - - name: Upload Artifact Peer ID dataโฌ†๏ธ - uses: actions/upload-artifact@v3 - with: - name: peerID - path: peerID.txt - - - name: Upload Artifact Key File dataโฌ†๏ธ - uses: actions/upload-artifact@v3 - with: - name: keyfile - path: key.bin - - build-mac: - needs: create-node - runs-on: macos-14 - - steps: - - name: Checkout Uplink directory ๐Ÿ”– - uses: actions/checkout@v4 - with: - repository: Satellite-im/Uplink - - - name: Checkout testing directory ๐Ÿ”– - uses: actions/checkout@v4 - with: - path: "./appium-tests" - - - name: Download Peer ID file ๐Ÿ—ณ๏ธ - uses: actions/download-artifact@v3 - with: - name: peerID - path: ./warp - - - name: Set up cargo cache ๐Ÿ› ๏ธ - uses: Swatinem/rust-cache@v2 - - - name: Install Rust ๐Ÿ’ฟ - uses: actions-rs/toolchain@v1 - with: - toolchain: 1.75.0 - override: true - components: rustfmt, clippy - - - name: Add Targets for MacOS - env: - MACOSX_DEPLOYMENT_TARGET: "10.13" - run: | - rustup target add x86_64-apple-darwin aarch64-apple-darwin - - - name: Replace Warp Peer ID in Uplink ๐Ÿš€ - run: | - chmod +x ./appium-tests/scripts/replace_node.sh - ./appium-tests/scripts/replace_node.sh - - - name: Build executable ๐Ÿ–ฅ๏ธ - run: make dmg - continue-on-error: true - - - name: Create ZIP archive on MacOS ๐Ÿ—ณ๏ธ - run: | - ditto -c -k --sequesterRsrc --keepParent target/release/macos/Uplink.app Uplink-Mac-Universal.zip - - - name: Calculate hashes ๐Ÿงฎ - run: | - shasum -a 256 Uplink-Mac-Universal.zip > Uplink-Mac-Universal.zip.sha256.txt - - - name: Upload Artifact โฌ†๏ธ - uses: actions/upload-artifact@v3 - env: - NODE_OPTIONS: "--max-old-space-size=8192" - with: - name: Uplink-macos-latest - path: | - Uplink-Mac-Universal.zip - Uplink-Mac-Universal.zip.sha256.txt - - - name: Add label if any of build jobs failed - if: failure() - uses: buildsville/add-remove-label@v2.0.0 - with: - token: ${{ secrets.GITHUB_TOKEN }} - labels: | - Failed Automated Test - type: add - - build-windows: - needs: create-node + temp-windows: runs-on: labels: windows-latest @@ -146,17 +35,6 @@ jobs: with: repository: Satellite-im/Uplink - - name: Checkout testing directory ๐Ÿ”– - uses: actions/checkout@v4 - with: - path: "./appium-tests" - - - name: Download Peer ID file ๐Ÿ—ณ๏ธ - uses: actions/download-artifact@v3 - with: - name: peerID - path: ./warp - - name: Install Wix uses: actions/checkout@v4 with: @@ -181,10 +59,7 @@ jobs: id: setup-ffmpeg - name: Get localPeerId and build app ๐Ÿ–ฅ๏ธ - id: get_local_peer_id - run: | - ./appium-tests/scripts/replace_node.ps1 - cargo build --release -F production_mode + run: cargo build --release -F production_mode - name: Create ZIP archive on Windows ๐Ÿ—ณ๏ธ run: Compress-Archive -Path target/release/uplink.exe -Destination uplinkWindows.zip @@ -192,566 +67,20 @@ jobs: - name: Build Installer run: cargo wix --package uplink --no-build --nocapture - - name: Upload Executable โฌ†๏ธ - uses: actions/upload-artifact@v3 - with: - name: Uplink-windows-latest - path: target/wix/*.msi - - - name: Add label if any of build jobs failed - if: failure() - uses: buildsville/add-remove-label@v2.0.0 - with: - token: ${{ secrets.GITHUB_TOKEN }} - labels: | - Failed Automated Test - type: add - - test-mac: - needs: build-mac - runs-on: macos-14 - - steps: - - name: Checkout testing directory ๐Ÿ”– - uses: actions/checkout@v4 - - - name: Checkout Warp directory ๐Ÿ”– - uses: actions/checkout@v4 - with: - repository: Satellite-im/Warp - ref: b574da4ab10cfd7bf38ec0e2b499232a2e8f8eff - path: "./warp" - - - name: Install Dependencies - continue-on-error: true - run: | - brew update - brew install cairo pango - - - name: Download Key file ๐Ÿ—ณ๏ธ - uses: actions/download-artifact@v3 - with: - name: keyfile - path: ./warp - - - name: Install Rust ๐Ÿ’ฟ - uses: actions-rs/toolchain@v1 - with: - toolchain: 1.75.0 - override: true - components: rustfmt, clippy - - - name: Download the MacOS app ๐Ÿ—ณ๏ธ - uses: actions/download-artifact@v3 - with: - name: Uplink-macos-latest - path: ./apps - - - name: Enable opening app not codesigned ๐Ÿ–ฅ๏ธ - run: sudo spctl --master-disable - - - name: Copy DMG to Appium Apps Directory ๐Ÿ’ฟ - working-directory: ./apps - run: | - unzip Uplink-Mac-Universal.zip - cp -r ./Uplink.app ./Uplink2.app - perl -i -pe 's/im.satellite.uplink/im.satellite.uplinkChatUserB/g' ./Uplink2.app/Contents/Info.plist - cp -r ./Uplink.app /Applications/ - cp -r ./Uplink2.app /Applications/ - sudo xattr -r -d com.apple.quarantine /Applications/Uplink.app - sudo xattr -r -d com.apple.quarantine /Applications/Uplink2.app - - - name: Setup Node.js ๐Ÿ”จ - uses: actions/setup-node@v3 - with: - node-version: 20 - cache: "npm" - - - name: Cache NPM dependencies ๐Ÿ”จ - uses: actions/cache@v3 - id: cache-mac - with: - path: node_modules - key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }} - - - name: Install NPM dependencies ๐Ÿ“ฆ - if: steps.cache-mac.outputs.cache-hit != 'true' - run: npm ci - - - name: Update MacOS runner to not autocorrect text - run: | - defaults write -g NSAutomaticCapitalizationEnabled -bool false - defaults write -g NSAutomaticPeriodSubstitutionEnabled -bool false - defaults write -g NSAutomaticSpellingCorrectionEnabled -bool false - - - name: Delete Cache Folder and copy reusable data - run: | - rm -rf ~/.uplink/ - mkdir ./tests/fixtures/users/mac2 - cp -r ./tests/fixtures/users/FriendsTestUser/ ./tests/fixtures/users/mac2/FriendsTestUser - - - name: Run cargo build shuttle on Warp ๐Ÿš€ - working-directory: ./warp - run: cargo build --bin shuttle --release - - - name: Launch CI instance of Warp ๐Ÿš€ - working-directory: ./warp - run: ./target/release/shuttle --keyfile key.bin --listen-addr /ip4/127.0.0.1/tcp/4444 & - - - name: Run Tests on MacOS ๐Ÿงช - run: npm run mac.ci - - - name: Upload Test Report - MacOS CI - if: always() - uses: actions/upload-artifact@v3 - with: - name: test-report-macos-ci - path: ./test-report/*.xml - - - name: Upload Allure Test Results - if: always() - uses: actions/upload-artifact@v3 - with: - name: test-allure-mac-ci - path: ./allure-results/ - - - name: Upload Screenshots for MacOS ๐Ÿ“ท - uses: actions/upload-artifact@v3 - if: failure() - with: - name: appium-screenshots-MacOS - path: ./test-results - - - name: Upload Appium Log for MacOS ๐Ÿ“ท - uses: actions/upload-artifact@v3 - if: failure() - with: - name: appium-log-macos - path: ./appium.log - - - name: Add label if any of test jobs failed - if: failure() - uses: buildsville/add-remove-label@v2.0.0 - with: - token: ${{ secrets.GITHUB_TOKEN }} - labels: | - Failed Automated Test - type: add - - test-mac-chats: - needs: build-mac - runs-on: macos-14 - - steps: - - name: Checkout testing directory ๐Ÿ”– - uses: actions/checkout@v4 - - - name: Checkout Warp directory ๐Ÿ”– - uses: actions/checkout@v4 - with: - repository: Satellite-im/Warp - ref: b574da4ab10cfd7bf38ec0e2b499232a2e8f8eff - path: "./warp" - - - name: Install Dependencies - continue-on-error: true - run: | - brew update - brew install cairo pango - - - name: Download Key file ๐Ÿ—ณ๏ธ - uses: actions/download-artifact@v3 - with: - name: keyfile - path: ./warp - - - name: Install Rust ๐Ÿ’ฟ - uses: actions-rs/toolchain@v1 - with: - toolchain: 1.75.0 - override: true - components: rustfmt, clippy - - - name: Download the MacOS app ๐Ÿ—ณ๏ธ - uses: actions/download-artifact@v3 - with: - name: Uplink-macos-latest - path: ./apps - - - name: Enable opening app not codesigned ๐Ÿ–ฅ๏ธ - run: sudo spctl --master-disable - - - name: Copy DMG to Appium Apps Directory ๐Ÿ’ฟ - working-directory: ./apps - run: | - unzip Uplink-Mac-Universal.zip - cp -r ./Uplink.app ./Uplink2.app - cp -r ./Uplink.app ./Uplink3.app - perl -i -pe 's/im.satellite.uplink/im.satellite.uplinkChatUserA/g' ./Uplink.app/Contents/Info.plist - perl -i -pe 's/im.satellite.uplink/im.satellite.uplinkChatUserB/g' ./Uplink2.app/Contents/Info.plist - perl -i -pe 's/im.satellite.uplink/im.satellite.uplinkChatUserC/g' ./Uplink3.app/Contents/Info.plist - cp -r ./Uplink.app /Applications/ - cp -r ./Uplink2.app /Applications/ - cp -r ./Uplink3.app /Applications/ - sudo xattr -r -d com.apple.quarantine /Applications/Uplink.app - sudo xattr -r -d com.apple.quarantine /Applications/Uplink2.app - sudo xattr -r -d com.apple.quarantine /Applications/Uplink3.app - - - name: Setup Node.js ๐Ÿ”จ - uses: actions/setup-node@v3 - with: - node-version: 20 - cache: "npm" - - - name: Cache NPM dependencies ๐Ÿ”จ - uses: actions/cache@v3 - id: cache-mac - with: - path: node_modules - key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }} - - - name: Install NPM dependencies ๐Ÿ“ฆ - if: steps.cache-mac.outputs.cache-hit != 'true' - run: npm ci - - - name: Update MacOS runner to not autocorrect text - run: | - defaults write -g NSAutomaticCapitalizationEnabled -bool false - defaults write -g NSAutomaticPeriodSubstitutionEnabled -bool false - defaults write -g NSAutomaticSpellingCorrectionEnabled -bool false - - - name: Run cargo build shuttle on Warp ๐Ÿš€ - working-directory: ./warp - run: cargo build --bin shuttle --release - - - name: Launch CI instance of Warp ๐Ÿš€ - working-directory: ./warp - run: ./target/release/shuttle --keyfile key.bin --listen-addr /ip4/127.0.0.1/tcp/4444 & - - - name: Run Tests on MacOS ๐Ÿงช - run: npm run mac.multiremote - - - name: Upload Test Report - MacOS CI - if: always() - uses: actions/upload-artifact@v3 - with: - name: test-report-macos-chats - path: ./test-report/*.xml - - - name: Upload Allure Test Results - if: always() - uses: actions/upload-artifact@v3 - with: - name: test-allure-mac-chats - path: ./allure-results/ - - - name: Upload Screenshots for MacOS ๐Ÿ“ท - uses: actions/upload-artifact@v3 - if: failure() - with: - name: appium-screenshots-MacOS-chats - path: ./test-results - - - name: Upload Appium Log for MacOS ๐Ÿ“ท - uses: actions/upload-artifact@v3 - if: failure() - with: - name: appium-log-macos-chats - path: ./appium.log - - - name: Upload Uplink Logs if test fails ๐Ÿ“ท - uses: actions/upload-artifact@v3 - if: failure() - with: - name: uplink-logs - path: | - ~/.uplink/.user/debug.log - ~/.uplinkUserB/.user/debug.log - ~/.uplinkUserC/.user/debug.log - - - name: Add label if any of test jobs failed - if: failure() - uses: buildsville/add-remove-label@v2.0.0 - 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@v4 - - - name: Checkout Warp directory ๐Ÿ”– - uses: actions/checkout@v4 - with: - repository: Satellite-im/Warp - ref: b574da4ab10cfd7bf38ec0e2b499232a2e8f8eff - path: "./warp" - - - name: Download Key file ๐Ÿ—ณ๏ธ - uses: actions/download-artifact@v3 - with: - name: keyfile - path: ./warp - - - name: Install Rust ๐Ÿ’ฟ - uses: actions-rs/toolchain@v1 - with: - toolchain: 1.75.0 - override: true - components: rustfmt, clippy - - - 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: Install MSI and copy assets - working-directory: ./apps - run: | - Get-ChildItem -Recurse -Include "*.msi" | Rename-Item -NewName "uplink.msi" - mkdir C:\uplink - mv ./uplink.msi C:\uplink - Start-Process msiexec.exe -Wait -ArgumentList '/i "C:\uplink\uplink.msi" /qb' - - - name: Copy assets from Uplink - run: | - mkdir C:\Program` Files\extensions - mkdir $home/.uplink/themes - mkdir $home/.uplink/extensions - cp -r C:\Program` Files\uplink\bin\uplink.exe C:\Program` Files\uplink - cp -r C:\Program` Files\uplink\extensions\emoji_selector.dll C:\Program` Files\extensions - cp -r C:\Program` Files\uplink\extra\themes\ $home/.uplink/themes - cp -r C:\Program` Files\uplink\extensions\emoji_selector.dll $home/.uplink/extensions - - - name: Setup Node.js ๐Ÿ”จ - uses: actions/setup-node@v3 - with: - node-version: 20 - 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: Delete Cache Folder of Appium if exists - Windows - run: If (Test-Path $home/.appium) {Remove-Item -Recurse -Force $home/.appium} Else { Break } - shell: powershell - - - name: Setup FFMPEG to record screen - uses: FedericoCarboni/setup-ffmpeg@v2 - id: setup-ffmpeg - - - name: Run cargo build shuttle on Warp ๐Ÿš€ - working-directory: ./warp - run: cargo build --bin shuttle --release - - - name: Launch CI instance of Warp ๐Ÿš€ - working-directory: ./warp - run: ./target/release/shuttle --keyfile key.bin --listen-addr /ip4/127.0.0.1/tcp/4444 & - - - 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: | - $env:DRIVER="windows" - 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 + - name: Sign Wix Installer + uses: skymatic/code-sign-action@v1 with: - name: test-allure-windows-ci - path: ./allure-results/ + certificate: "${{ secrets.SM_CLIENT_CERT_FILE_B64 }}" + password: "${{ secrets.SM_CLIENT_CERT_PASSWORD }}" + certificatesha1: "${{ secrets.SM_CODE_SIGNING_CERT_SHA1_HASH }}" + certificatename: "Certificate for Uplink Installer" + description: "Uplink Installer" + timestampUrl: "http://timestamp.digicert.com" + folder: "target/wix/*.msi" + recursive: true - - 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 ๐Ÿ“ท + - name: Upload Executable โฌ†๏ธ 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/add-remove-label@v2.0.0 - with: - token: ${{ secrets.GITHUB_TOKEN }} - labels: | - Failed Automated Test - type: add - - publish-test-results: - if: always() - needs: - [ - create-node, - build-mac, - build-windows, - test-mac, - test-mac-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 Chats - uses: actions/download-artifact@v3 - with: - name: test-report-macos-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: testing-uplink/allure - - - name: Download Allure Results for MacOS CHats - uses: actions/download-artifact@v3 - with: - name: test-allure-mac-chats - path: testing-uplink/allure - - - name: Download Allure Results for Windows CI - uses: actions/download-artifact@v3 - with: - name: test-allure-windows-ci - path: testing-uplink/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@v4 - if: success() - continue-on-error: true - with: - repository: Satellite-im/test-reports - 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: testing-uplink/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: - deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }} - external_repository: Satellite-im/test-reports - 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/test-reports/${{ github.run_number }}) - - remove-label: - needs: - [ - create-node, - build-mac, - build-windows, - test-mac, - test-mac-chats, - test-windows, - publish-test-results, - ] - runs-on: ubuntu-latest - - steps: - - name: Checkout testing directory ๐Ÿ”– - uses: actions/checkout@v4 - - - name: Delete artifacts required on failed execution - uses: geekyeggo/delete-artifact@v2 - with: - name: | - peerID - keyfile - Uplink-windows-latest - Uplink-macos-latest - test-report-macos-ci - test-report-macos-chats - test-report-windows-ci - test-allure-mac-ci - test-allure-mac-chats - test-allure-windows-ci - uplink-logs - - - name: Remove label if all test jobs succeeded - uses: buildsville/add-remove-label@v2.0.0 - with: - token: ${{ secrets.GITHUB_TOKEN }} - labels: | - Failed Automated Test - type: remove + name: Uplink-windows-test + path: target/wix/*.msi