Skip to content

Commit

Permalink
pull playwright tests into a reusable action and call them from both …
Browse files Browse the repository at this point in the history
…staging and gha integration tests
  • Loading branch information
hahn-kev committed Nov 19, 2024
1 parent ce96d52 commit caf0328
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 80 deletions.
55 changes: 55 additions & 0 deletions .github/actions/playwright-tests/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: Setup and run playwright tests
inputs:
lexbox-hostname:
description: 'The hostname of the lexbox server, should include port if not 80'
required: true
lexbox-default-password:
description: 'The default password for the lexbox server'
required: true
viewer-tests:
description: 'Whether to run viewer tests'
required: false
default: 'true'

runs:
using: composite
steps:
# First we need to setup Node...
- uses: actions/setup-node@v4
with:
node-version-file: 'frontend/package.json'
# Then we can set up pnpm...
- uses: pnpm/action-setup@a3252b78c470c02df07e9d59298aecedc3ccdd6d # v3.0.0
with:
package_json_file: 'frontend/package.json'
# Then we can have Node set up package caching
- uses: actions/setup-node@v4
with:
node-version-file: 'frontend/package.json'
cache: 'pnpm'
cache-dependency-path: 'frontend/pnpm-lock.yaml'
- name: Playwright setup
shell: bash
working-directory: frontend
run: pnpm install
- name: Set up Playwright dependencies
shell: bash
working-directory: frontend
run: pnpm exec playwright install --with-deps

- name: Integration tests (Playwright)
id: playwright-tests
shell: bash
env:
TEST_SERVER_HOSTNAME: ${{ inputs.lexbox-hostname }}
TEST_DEFAULT_PASSWORD: ${{ inputs.lexbox-default-password }}
working-directory: frontend
run: pnpm run test ${{ inputs.viewer-tests != 'true' && '-g "^(?!.*Viewer Page).*"' || '' }}

- name: Upload playwright results
if: ${{ always() && steps.playwright-tests.outcome != 'skipped' }}
uses: actions/upload-artifact@v4
with:
name: playwright-traces
path: |
./frontend/test-results
51 changes: 6 additions & 45 deletions .github/workflows/integration-test-gha.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -93,52 +93,13 @@ jobs:
run: dotnet test LexBoxOnly.slnf --logger GitHubActions --filter "Category=Integration|Category=FlakyIntegration" --blame-hang-timeout 40m

##playwright tests
# First we need to setup Node...
- uses: actions/setup-node@v4
if: always()
- name: Setup and run playwright tests
if: ${{ !cancelled() }}
uses: ./.github/actions/playwright-tests
with:
node-version-file: 'frontend/package.json'
# Then we can set up pnpm...
- uses: pnpm/action-setup@a3252b78c470c02df07e9d59298aecedc3ccdd6d # v3.0.0
if: always()
with:
package_json_file: 'frontend/package.json'
# Then we can have Node set up package caching
- uses: actions/setup-node@v4
if: always()
with:
node-version-file: 'frontend/package.json'
cache: 'pnpm'
cache-dependency-path: 'frontend/pnpm-lock.yaml'
- name: Playwright setup
if: always()
working-directory: frontend
run: pnpm install
- name: Set up Playwright dependencies
if: always()
working-directory: frontend
run: pnpm exec playwright install --with-deps

- name: Integration tests (Playwright)
if: always()
id: playwright-tests
env:
TEST_SERVER_HOSTNAME: 'localhost:6579'
TEST_STANDARD_HG_HOSTNAME: 'hg.localhost:6579'
TEST_RESUMABLE_HG_HOSTNAME: 'resumable.localhost:6579'
TEST_PROJECT_CODE: 'sena-3'
TEST_DEFAULT_PASSWORD: 'pass'
working-directory: frontend
run: pnpm run test -g "^(?!.*Viewer Page).*" # exclude the viewer page tests, because mongo is not available

- name: Upload playwright results
if: ${{ always() && steps.playwright-tests.outcome != 'skipped' }}
uses: actions/upload-artifact@v4
with:
name: playwright-traces
path: |
./frontend/test-results
lexbox-hostname: 'localhost:6579'
lexbox-default-password: 'pass'
viewer-tests: 'false' # exclude the viewer page tests, because mongo is not available

- name: status
if: failure()
Expand Down
44 changes: 9 additions & 35 deletions .github/workflows/integration-test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -152,8 +152,6 @@ jobs:
runs-on: ${{ inputs.runs-on }}
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Setup self-hosted dependencies
if: ${{ inputs.runs-on == 'self-hosted' }}
run: |
Expand All @@ -164,47 +162,23 @@ jobs:
sudo apt-get install -f
rm powershell_7.4.1-1.deb_amd64.deb
pwsh #validate that powershell installed correctly
# First we need to setup Node...
- uses: actions/setup-node@v4
with:
node-version-file: 'frontend/package.json'
# Then we can set up pnpm...
- uses: pnpm/action-setup@a3252b78c470c02df07e9d59298aecedc3ccdd6d # v3.0.0
with:
package_json_file: 'frontend/package.json'
# Then we can have Node set up package caching
- uses: actions/setup-node@v4
with:
node-version-file: 'frontend/package.json'
cache: 'pnpm'
cache-dependency-path: 'frontend/pnpm-lock.yaml'
- name: Playwright setup
working-directory: frontend
run: pnpm install && pnpm pretest
- name: Set up Playwright dependencies
working-directory: frontend
if: ${{ inputs.runs-on == 'self-hosted' }}
run: sudo pnpm exec playwright install-deps
- name: Integration tests (Playwright)
env:
TEST_SERVER_HOSTNAME: ${{ vars.TEST_SERVER_HOSTNAME }}
# this is not a typo, we need to use the lf domain because it has a cert that hg will validate
TEST_STANDARD_HG_HOSTNAME: ${{ vars.TEST_STANDARD_HG_HOSTNAME }}
TEST_RESUMABLE_HG_HOSTNAME: ${{ vars.TEST_RESUMABLE_HG_HOSTNAME }}
TEST_PROJECT_CODE: 'sena-3'
TEST_DEFAULT_PASSWORD: ${{ secrets.TEST_USER_PASSWORD }}
working-directory: frontend
run: pnpm test
- name: Setup and run playwright tests
if: ${{ !cancelled() }}
uses: ./.github/actions/playwright-tests
with:
lexbox-hostname: ${{ vars.TEST_SERVER_HOSTNAME }}
lexbox-default-password: ${{ secrets.TEST_USER_PASSWORD }}
viewer-tests: 'true'
- name: Password protect Playwright traces
id: password_protect_test_results
if: ${{ always() }}
if: ${{ !cancelled() }}
shell: bash
env:
ZIP_PASSWORD: ${{ secrets.TEST_USER_PASSWORD }}
run: 7z a ./playwright-traces.7z -mx=0 -mmt=off ./frontend/test-results -p"$ZIP_PASSWORD"
- name: Upload playwright results
if: ${{ always() && steps.password_protect_test_results.outcome == 'success' }}
if: ${{ !cancelled() && steps.password_protect_test_results.outcome == 'success' }}
uses: actions/upload-artifact@v4
with:
name: playwright-traces-${{ inputs.runs-on }}-hg-${{ inputs.hg-version }}
Expand Down

0 comments on commit caf0328

Please sign in to comment.