Positron: Windows Full Test Suite #132
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: "Positron: Windows Full Test Suite" | |
# Run tests daily at 4am UTC (11p EST) on weekdays for now, or manually | |
on: | |
schedule: | |
- cron: "0 4 * * 1-5" | |
workflow_dispatch: | |
permissions: | |
id-token: write | |
contents: read | |
jobs: | |
windows: | |
name: Tests on Windows | |
runs-on: | |
labels: [windows-latest-8x] | |
timeout-minutes: 60 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
POSITRON_BUILD_NUMBER: 0 # CI skips building releases | |
BUILD_ARTIFACTSTAGINGDIRECTORY: ..\..\.build\logs\smoke-tests-electron | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version-file: .nvmrc | |
- name: Install System Level Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.10.10" | |
- name: Cache node_modules, build, extensions, and remote | |
uses: ./.github/actions/cache-multi-paths | |
- name: Install node dependencies with yarn | |
env: | |
npm_config_arch: x64 | |
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 | |
ELECTRON_SKIP_BINARY_DOWNLOAD: 1 | |
POSITRON_GITHUB_PAT: ${{ github.token }} | |
shell: pwsh | |
# nvm on windows does not see .nvmrc | |
# | |
# the installation of the npm package windows-process-tree is known to fail | |
# intermittently in the Github Actions build environment, so we retry | |
# this step a few times if necessary. | |
# | |
# see https://github.com/posit-dev/positron/issues/3481 | |
run: | | |
corepack enable | |
.\scripts\run-with-retry.ps1 -maxAttempts 3 -command "yarn --network-timeout 120000" | |
yarn --cwd test/automation install --frozen-lockfile | |
yarn --cwd test/smoke install --frozen-lockfile | |
- name: Compile and Download | |
run: yarn npm-run-all --max-old-space-size=4095 -lp compile "electron x64" playwright-install download-builtin-extensions | |
- name: Compile Smoke Tests | |
run: | | |
yarn --cwd test/automation compile | |
yarn --cwd test/smoke compile | |
- name: Install python dependencies | |
run: | | |
curl https://raw.githubusercontent.com/posit-dev/qa-example-content/main/requirements.txt --output requirements.txt | |
python -m pip install --upgrade pip | |
python -m pip install -r requirements.txt | |
python -m pip install ipykernel trcli | |
- name: Set up R | |
uses: r-lib/actions/setup-r@v2 | |
with: | |
r-version: '4.4.0' | |
- name: Install R packages | |
run: | | |
curl https://raw.githubusercontent.com/posit-dev/qa-example-content/main/DESCRIPTION --output DESCRIPTION | |
Rscript -e "install.packages('pak')" | |
Rscript -e "pak::local_install_dev_deps(ask = FALSE)" | |
- name: Setup Graphviz | |
uses: ts-graphviz/setup-graphviz@v2.0.2 | |
- name: Set up Quarto | |
uses: quarto-dev/quarto-actions/setup@v2 | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tinytex: true | |
- name: Setup AWS S3 Access | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
role-to-assume: ${{ secrets.QA_AWS_RO_ROLE }} | |
aws-region: ${{ secrets.QA_AWS_REGION }} | |
- name: Run Smoke Tests (Electron) | |
env: | |
POSITRON_PY_VER_SEL: 3.10.10 | |
POSITRON_R_VER_SEL: 4.4.0 | |
id: electron-smoke-tests | |
run: | | |
Write-Output $env:BUILD_ARTIFACTSTAGINGDIRECTORY # debug | |
cd test\smoke | |
node run-tests.js --tracing --win | |
Get-ChildItem -Recurse -Filter "*results.xml" # debug | |
- name: Set TestRail Run Title | |
id: set-testrail-run-title | |
if: success() || failure() | |
run: echo "TESTRAIL_TITLE=$(Get-Date -Format 'yyyy-MM-dd') Nightly Smoke Tests - $env:GITHUB_REF_NAME" >> $env:GITHUB_ENV | |
shell: pwsh | |
- name: Upload Test Results to TestRail | |
id: testrail-upload | |
if: success() || failure() | |
shell: pwsh | |
run: | | |
trcli --host "https://posit.testrail.io/" --project Positron --username testrailautomation@posit.co --key ${{ secrets.TESTRAIL_API_KEY}} parse_junit --file ".build/logs/smoke-tests-electron/test-results/xunit-results.xml" --case-matcher name --title "$env:TESTRAIL_TITLE" --close-run | |
- name: Upload run artifacts - electron | |
if: always() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: run-artifacts-electron | |
path: .build/logs/smoke-tests-electron/ | |
slack-notification: | |
name: "Send Slack notification" | |
runs-on: ubuntu-latest | |
needs: windows | |
if: failure() | |
steps: | |
- name: "Send Slack notification" | |
uses: testlabauto/action-test-results-to-slack@v0.0.6 | |
with: | |
github_token: ${{ secrets.POSITRON_GITHUB_PAT }} | |
slack_token: ${{ secrets.SMOKE_TESTS_SLACK_TOKEN }} | |
slack_channel: C07FR1JNZNJ #positron-test-results channel | |
suite_name: Positron Full Test Suite (Windows) |