Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
dfa6b75
feat: add Playwright e2e testing infrastructure
jeffredodd Feb 2, 2026
6c9a6cb
fix: update e2e test and remove unreachable payment type check
jeffredodd Feb 4, 2026
4998bfd
test: temporarily skip flaky payroll blockers e2e test
jeffredodd Feb 4, 2026
e6e5636
fix: replace waitForTimeout with proper Playwright wait conditions
jeffredodd Feb 4, 2026
60fd177
refactor: extract fillDate helper, cleanup skipped test, add Recovery…
jeffredodd Feb 4, 2026
ac1b6f8
perf: reduce e2e test timeouts (30s→15s, 15s→10s, 10s→5s)
jeffredodd Feb 4, 2026
8ccb06b
refactor: remove redundant waits and explicit timeouts in e2e tests
jeffredodd Feb 4, 2026
27cb7fd
refactor: remove remaining redundant waits and explicit timeouts in e…
jeffredodd Feb 4, 2026
994e5e4
ci: add Playwright browser caching for faster e2e tests
jeffredodd Feb 4, 2026
91b5674
ci: use Playwright Docker container to skip system deps installation
jeffredodd Feb 4, 2026
da31686
revert: remove Docker container, keep browser caching only
jeffredodd Feb 4, 2026
df11a33
feat: add local and demo environment e2e testing
jeffredodd Feb 10, 2026
ca0b1dc
ci: mark e2e-demo job as continue-on-error
jeffredodd Feb 10, 2026
9948416
ci: disable e2e-demo job until runner has network access
jeffredodd Feb 10, 2026
6fc07de
ci: re-enable e2e-demo job with better diagnostics
jeffredodd Feb 10, 2026
d532d80
ci: try ubuntu-latest runner for e2e-demo job
jeffredodd Feb 10, 2026
819d7ce
ci: add full diagnostics for e2e-demo 403 response
jeffredodd Feb 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 99 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -150,3 +150,102 @@ jobs:

- name: Test with coverage
run: npm run test:ci

# E2E job: Run Playwright e2e tests (parallel with other checks)
e2e:
needs: setup
runs-on:
group: gusto-ubuntu-default
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'

- name: Restore node_modules cache
uses: actions/cache/restore@v4
with:
path: node_modules
key: ${{ needs.setup.outputs.cache-key }}

- name: Cache Playwright browsers
id: playwright-cache
uses: actions/cache@v4
with:
path: ~/.cache/ms-playwright
key: playwright-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
playwright-${{ runner.os }}-

- name: Install Playwright browsers
if: steps.playwright-cache.outputs.cache-hit != 'true'
run: npx playwright install --with-deps chromium

- name: Install Playwright system dependencies only
if: steps.playwright-cache.outputs.cache-hit == 'true'
run: npx playwright install-deps chromium

- name: Initialize MSW
run: npx msw init e2e/public --save=false

- name: Run e2e tests
run: npm run test:e2e

- name: Upload test results
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: playwright-report
path: playwright-report/
retention-days: 7

# E2E Demo job: Run Playwright e2e tests against the live demo environment
# Uses ubuntu-latest (standard GitHub runner) for unrestricted outbound access
# to flows.gusto-demo.com (gusto-ubuntu-default returns 403)
e2e-demo:
needs: setup
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'

- name: Restore node_modules cache
uses: actions/cache/restore@v4
with:
path: node_modules
key: ${{ needs.setup.outputs.cache-key }}

- name: Cache Playwright browsers
id: playwright-cache
uses: actions/cache@v4
with:
path: ~/.cache/ms-playwright
key: playwright-${{ runner.os }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
playwright-${{ runner.os }}-

- name: Install Playwright browsers
if: steps.playwright-cache.outputs.cache-hit != 'true'
run: npx playwright install --with-deps chromium

- name: Install Playwright system dependencies only
if: steps.playwright-cache.outputs.cache-hit == 'true'
run: npx playwright install-deps chromium

- name: Initialize MSW
run: npx msw init e2e/public --save=false

- name: Run e2e tests against demo environment
run: npm run test:e2e:demo

- name: Upload demo test results
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: playwright-report-demo
path: playwright-report/
retention-days: 7
11 changes: 11 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -189,3 +189,14 @@ dist

# Storybook build output
storybook-static/

# Playwright
playwright-report/
test-results/

# E2E local testing
e2e/.e2e-state.json
e2e/local.config.env

# MSW generated service worker
mockServiceWorker.js
Loading
Loading