1
0
mirror of https://github.com/psychopy/psychojs.git synced 2025-05-10 10:40:54 +00:00
psychojs/.github/workflows/Automated Test (full).yml
2022-12-13 19:49:13 +00:00

201 lines
7.1 KiB
YAML

# Starts up a separate BrowserStack session for each combination of platform and test.
# That's relatively slow, but also thorough, since a failed test does not abort any successive tests.
name: Automated Test (full)
on:
# schedule:
# Temporarily disabled so the stager test logs aren't cleaned up
# - cron: '0 0 * * sat'
workflow_dispatch:
inputs:
repo:
description: 'PsychoJS repo (psychopy/psychojs)'
required: false
ref:
description: 'branch/tag/SHA (default branch)'
required: false
testrun:
description: 'testrun (full)'
required: false
subset:
description: 'subset (false)'
required: false
platform:
description: 'platform (\*)'
required: false
label:
description: 'label (full)'
required: false
env:
BROWSERSTACK_ACCESSKEY: ${{ secrets.BROWSERSTACK_ACCESSKEY }}
BROWSERSTACK_USER: ${{ secrets.BROWSERSTACK_USER }}
STAGING_PASSWORD: ${{ secrets.STAGING_PASSWORD }}
STAGING_PORT: ${{ secrets.STAGING_PORT }}
STAGING_USERNAME: ${{ secrets.STAGING_USERNAME }}
PSYCHOJS_PATH: '/home/runner/work/psychojs/psychojs/psychojs'
DEFAULT_REPO: 'psychopy/psychojs'
DEFAULT_TESTRUN: 'full'
DEFAULT_SUBSET: 'false'
DEFAULT_PLATFORM: '\*'
DEFAULT_LABEL: 'full'
jobs:
prepare:
name: Clean up and get tests
runs-on: ubuntu-latest
outputs:
tests: ${{steps.get_tests.outputs.tests}}
steps:
# START: install psychojs_testing
- name: Checkout psychojs_testing
uses: actions/checkout@v2
with:
repository: psychopy/psychojs_testing
path: psychojs_testing
- name: Setup node
uses: actions/setup-node@v2
with:
node-version: '15'
- name: Cache modules psychojs_testing
uses: actions/cache@v2
env:
cache-name: cache-modules-psychojs_testing
with:
path: ~/psychojs_testing/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-:
- name: Install psychojs_testing
run: npm --prefix psychojs_testing ci
# END: install psychojs_testing
- name: Turnstyle (wait for other workflows to complete)
uses: softprops/turnstyle@v1
with:
poll-interval-seconds: 10
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Sync BS logs and Stager with GitHub
run: node scripts/cli/syncWithGitHub.cjs alain sotiri thomas
working-directory: ./psychojs_testing
- name: Delete old test logs
run: node scripts/cli/deleteLogs.cjs --testrun ${{github.event.inputs.testrun || env.DEFAULT_TESTRUN}}
working-directory: ./psychojs_testing
- name: Get tests
id: get_tests
run: echo "::set-output name=tests::$(node scripts/cli/tabulateTests.cjs --label ${{github.event.inputs.label || env.DEFAULT_LABEL}} --outputFormat paths)"
working-directory: ./psychojs_testing
tests:
name: Test
needs: [prepare]
runs-on: ubuntu-latest
continue-on-error: true
strategy:
max-parallel: 1
matrix:
test: ${{fromJson(needs.prepare.outputs.tests)}}
steps:
# START: install psychojs_testing
- name: Checkout psychojs_testing
uses: actions/checkout@v2
with:
repository: psychopy/psychojs_testing
path: psychojs_testing
- name: Setup node
uses: actions/setup-node@v2
with:
node-version: '14'
- name: Cache modules psychojs_testing
uses: actions/cache@v2
env:
cache-name: cache-modules-psychojs_testing
with:
path: ~/psychojs_testing/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-:
- name: Install psychojs_testing
run: npm --prefix psychojs_testing ci
# END: install psychojs_testing
# START: install psychojs
- name: Checkout psychojs
uses: actions/checkout@v2
with:
repository: ${{github.event.inputs.repo || env.DEFAULT_REPO}}
ref: ${{github.event.inputs.ref}}
path: psychojs
- name: Cache modules psychojs
uses: actions/cache@v2
env:
cache-name: cache-modules-psychojs
with:
path: ~/psychojs/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-:
- name: Install psychojs
run: npm --prefix psychojs ci
# END: install psychojs
# START: wait for other workflows to complete
- name: Turnstyle (wait for other workflows to complete)
uses: softprops/turnstyle@v1
with:
poll-interval-seconds: 10
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# END: wait for other workflows to complete
# START: run tests
- name: Run test
run: node test.cjs --server bs --testrun ${{github.event.inputs.testrun || env.DEFAULT_TESTRUN}} --subset ${{github.event.inputs.subset || env.DEFAULT_SUBSET}} --platform ${{github.event.inputs.platform || env.DEFAULT_PLATFORM}} --url stager --uploadExperiments --uploadResults --label ${{matrix.test}}
working-directory: ./psychojs_testing
# END: run tests
join_reports:
name: Join reports
needs: [tests]
runs-on: ubuntu-latest
steps:
# START: install psychojs_testing
- name: Checkout psychojs_testing
uses: actions/checkout@v2
with:
repository: psychopy/psychojs_testing
path: psychojs_testing
- name: Setup node
uses: actions/setup-node@v2
with:
node-version: '14'
- name: Cache modules psychojs_testing
uses: actions/cache@v2
env:
cache-name: cache-modules-psychojs_testing
with:
path: ~/psychojs_testing/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-:
- name: Install psychojs_testing
run: npm --prefix psychojs_testing ci
# END: install psychojs_testing
- name: Turnstyle (wait for other workflows to complete)
uses: softprops/turnstyle@v1
with:
poll-interval-seconds: 10
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Join reports
run: node scripts/cli/joinReports.cjs --testrun ${{github.event.inputs.testrun || env.DEFAULT_TESTRUN}}
working-directory: ./psychojs_testing