Skip to content

Positron: Windows Full Test Suite #132

Positron: Windows Full Test Suite

Positron: Windows Full Test Suite #132

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)