Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
10c47b8
migration from yarn to npm
garethbowen Apr 24, 2026
5b29f33
update package lock for tree-sitter-xpath
garethbowen Apr 24, 2026
d95974f
mark tree-sitter-xpath as external
garethbowen Apr 28, 2026
27ade34
reset
garethbowen Apr 29, 2026
25f338c
run playwright right
garethbowen Apr 29, 2026
4711cce
align better with central engine versions
garethbowen Apr 29, 2026
29d461d
standardise on central node version
garethbowen Apr 29, 2026
70ad987
one more yarn command
garethbowen Apr 29, 2026
0546ecc
downgrade packages to get through compilation
garethbowen Apr 29, 2026
bb56969
various fixes
garethbowen Apr 29, 2026
5074bd2
remove external hack
garethbowen Apr 29, 2026
ae1ba25
lock down prime themes
garethbowen Apr 29, 2026
a6a6460
update expected screenshot
garethbowen Apr 29, 2026
40f5007
reintroduce multiple node versions
garethbowen Apr 29, 2026
7d5ef54
fix typo
garethbowen Apr 29, 2026
b75adcf
expand matricies
garethbowen Apr 29, 2026
6273665
support changesets
garethbowen Apr 29, 2026
18e2026
See npm run
garethbowen Apr 30, 2026
4723649
use array for params
garethbowen Apr 30, 2026
fb62ecd
0.15.0
garethbowen Apr 30, 2026
48ac099
0.15.0
garethbowen Apr 30, 2026
59297c2
0.15.0
garethbowen Apr 30, 2026
47ae80b
0.15.0
garethbowen Apr 30, 2026
7364a3f
0.15.0
garethbowen Apr 30, 2026
3555d5d
sync package-lock
garethbowen Apr 30, 2026
f4a9cb7
fix versions
garethbowen Apr 30, 2026
3aefe11
remove duplicated xforms-engine
garethbowen Apr 30, 2026
b5a57b5
and another one
garethbowen Apr 30, 2026
3d0a3fe
this one too
garethbowen Apr 30, 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
110 changes: 55 additions & 55 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:
strategy:
fail-fast: false
matrix:
node-version: ['20.19.3', '22.12.0', '24.11.0']
node-version: ['20.19.3', '22.12.0', '24.13.0']

steps:
- uses: 'actions/checkout@v5'
Expand All @@ -60,7 +60,7 @@ jobs:
path: |
node_modules
**/node_modules
key: install-${{ matrix.node-version }}-${{ hashFiles('yarn.lock', '.yarnrc.yml', '.github/workflows/ci.yml', 'examples/*/yarn.lock', 'packages/*/package.json', 'packages/*/yarn.lock') }}
key: install-${{ matrix.node-version }}-${{ hashFiles('package-lock.json', '.npmrc', '.github/workflows/ci.yml', 'examples/*/package-lock.json', 'packages/*/package.json', 'packages/*/package-lock.json') }}

- uses: 'actions/cache@v5'
id: cache-build
Expand All @@ -71,8 +71,8 @@ jobs:
packages/web-forms/dist-demo
key: build-${{ matrix.node-version }}-${{ github.sha }}

- run: 'yarn install --immutable'
- run: 'yarn build --force'
- run: 'npm ci'
- run: 'npm run build'

lint:
name: 'Lint (global)'
Expand All @@ -81,7 +81,7 @@ jobs:

strategy:
matrix:
node-version: ['24.11.0']
node-version: ['24.13.0']

steps:
- uses: 'actions/checkout@v5'
Expand All @@ -96,7 +96,7 @@ jobs:
path: |
node_modules
**/node_modules
key: install-${{ matrix.node-version }}-${{ hashFiles('yarn.lock', '.yarnrc.yml', '.github/workflows/ci.yml', 'examples/*/yarn.lock', 'packages/*/package.json', 'packages/*/yarn.lock') }}
key: install-${{ matrix.node-version }}-${{ hashFiles('package-lock.json', '.npmrc', '.github/workflows/ci.yml', 'examples/*/package-lock.json', 'packages/*/package.json', 'packages/*/package-lock.json') }}
fail-on-cache-miss: true

- uses: 'actions/cache@v5'
Expand All @@ -109,9 +109,9 @@ jobs:
key: build-${{ matrix.node-version }}-${{ github.sha }}
fail-on-cache-miss: true

- run: 'yarn lint'
- run: 'npm run lint'

- run: 'yarn format:checkonly'
- run: 'npm run format:checkonly'

odk-common:
name: '@getodk/common'
Expand All @@ -122,16 +122,16 @@ jobs:
fail-fast: false
matrix:
target: ['Node']
node-version: ['20.19.3', '22.12.0', '24.11.0']
node-version: ['20.19.3', '22.12.0', '24.13.0']
include:
- target: 'Web'
node-version: '24.11.0'
node-version: '24.13.0'
browser: chromium
- target: 'Web'
node-version: '24.11.0'
node-version: '24.13.0'
browser: firefox
- target: 'Web'
node-version: '24.11.0'
node-version: '24.13.0'
browser: webkit

steps:
Expand All @@ -147,7 +147,7 @@ jobs:
path: |
node_modules
**/node_modules
key: install-${{ matrix.node-version }}-${{ hashFiles('yarn.lock', '.yarnrc.yml', '.github/workflows/ci.yml', 'examples/*/yarn.lock', 'packages/*/package.json', 'packages/*/yarn.lock') }}
key: install-${{ matrix.node-version }}-${{ hashFiles('package-lock.json', '.npmrc', '.github/workflows/ci.yml', 'examples/*/package-lock.json', 'packages/*/package.json', 'packages/*/package-lock.json') }}
fail-on-cache-miss: true

- uses: 'actions/cache@v5'
Expand All @@ -161,16 +161,16 @@ jobs:
fail-on-cache-miss: true

- if: ${{ matrix.target == 'Node' }}
run: 'yarn workspace @getodk/common test:types'
run: 'npm run test:types -w packages/common'

- if: ${{ matrix.target == 'Node' }}
run: 'yarn workspace @getodk/common test-node:jsdom'
run: 'npm run test-node:jsdom -w packages/common'

- if: ${{ matrix.target == 'Web' }}
run: 'yarn playwright install ${{ matrix.browser }} --with-deps'
run: 'npx playwright install ${{ matrix.browser }} --with-deps'

- if: ${{ matrix.target == 'Web' }}
run: 'yarn workspace @getodk/common test-browser:${{ matrix.browser }}'
run: 'npm run test-browser:${{ matrix.browser }} -w packages/common'

xforms-engine:
name: '@getodk/xforms-engine'
Expand All @@ -181,16 +181,16 @@ jobs:
fail-fast: false
matrix:
target: ['Node']
node-version: ['20.19.3', '22.12.0', '24.11.0']
node-version: ['20.19.3', '22.12.0', '24.13.0']
include:
- target: 'Web'
node-version: '24.11.0'
node-version: '24.13.0'
browser: chromium
- target: 'Web'
node-version: '24.11.0'
node-version: '24.13.0'
browser: firefox
- target: 'Web'
node-version: '24.11.0'
node-version: '24.13.0'
browser: webkit

steps:
Expand All @@ -206,7 +206,7 @@ jobs:
path: |
node_modules
**/node_modules
key: install-${{ matrix.node-version }}-${{ hashFiles('yarn.lock', '.yarnrc.yml', '.github/workflows/ci.yml', 'examples/*/yarn.lock', 'packages/*/package.json', 'packages/*/yarn.lock') }}
key: install-${{ matrix.node-version }}-${{ hashFiles('package-lock.json', '.npmrc', '.github/workflows/ci.yml', 'examples/*/package-lock.json', 'packages/*/package.json', 'packages/*/package-lock.json') }}
fail-on-cache-miss: true

- uses: 'actions/cache@v5'
Expand All @@ -220,16 +220,16 @@ jobs:
fail-on-cache-miss: true

- if: ${{ matrix.target == 'Node' }}
run: 'yarn workspace @getodk/xforms-engine test:types'
run: 'npm run test:types -w=packages/xforms-engine'

- if: ${{ matrix.target == 'Node' }}
run: 'yarn workspace @getodk/xforms-engine test-node:jsdom'
run: 'npm run test-node:jsdom -w=packages/xforms-engine'

- if: ${{ matrix.target == 'Web' }}
run: 'yarn playwright install ${{ matrix.browser }} --with-deps'
run: 'npx playwright install ${{ matrix.browser }} --with-deps'

- if: ${{ matrix.target == 'Web' }}
run: 'yarn workspace @getodk/xforms-engine test-browser:${{ matrix.browser }}'
run: 'npm run test-browser:${{ matrix.browser }} -w=packages/xforms-engine'

scenario:
name: '@getodk/scenario'
Expand All @@ -240,16 +240,16 @@ jobs:
fail-fast: false
matrix:
target: ['Node']
node-version: ['20.19.3', '22.12.0', '24.11.0']
node-version: ['20.19.3', '22.12.0', '24.13.0']
include:
- target: 'Web'
node-version: '24.11.0'
node-version: '24.13.0'
browser: chromium
- target: 'Web'
node-version: '24.11.0'
node-version: '24.13.0'
browser: firefox
- target: 'Web'
node-version: '24.11.0'
node-version: '24.13.0'
browser: webkit

steps:
Expand All @@ -265,7 +265,7 @@ jobs:
path: |
node_modules
**/node_modules
key: install-${{ matrix.node-version }}-${{ hashFiles('yarn.lock', '.yarnrc.yml', '.github/workflows/ci.yml', 'examples/*/yarn.lock', 'packages/*/package.json', 'packages/*/yarn.lock') }}
key: install-${{ matrix.node-version }}-${{ hashFiles('package-lock.json', '.npmrc', '.github/workflows/ci.yml', 'examples/*/package-lock.json', 'packages/*/package.json', 'packages/*/package-lock.json') }}
fail-on-cache-miss: true

- uses: 'actions/cache@v5'
Expand All @@ -279,16 +279,16 @@ jobs:
fail-on-cache-miss: true

- if: ${{ matrix.target == 'Node' }}
run: 'yarn workspace @getodk/scenario test:types'
run: 'npm run test:types -w=packages/scenario'

- if: ${{ matrix.target == 'Node' }}
run: 'yarn workspace @getodk/scenario test-node:jsdom'
run: 'npm run test-node:jsdom -w=packages/scenario'

- if: ${{ matrix.target == 'Web' }}
run: 'yarn playwright install ${{ matrix.browser }} --with-deps'
run: 'npx playwright install ${{ matrix.browser }} --with-deps'

- if: ${{ matrix.target == 'Web' }}
run: 'yarn workspace @getodk/scenario test-browser:${{ matrix.browser }}'
run: 'npm run test-browser:${{ matrix.browser }} -w=packages/scenario'

xpath:
name: '@getodk/xpath'
Expand All @@ -299,16 +299,16 @@ jobs:
fail-fast: false
matrix:
target: ['Node']
node-version: ['20.19.3', '22.12.0', '24.11.0']
node-version: ['20.19.3', '22.12.0', '24.13.0']
include:
- target: 'Web'
node-version: '24.11.0'
node-version: '24.13.0'
browser: chromium
- target: 'Web'
node-version: '24.11.0'
node-version: '24.13.0'
browser: firefox
- target: 'Web'
node-version: '24.11.0'
node-version: '24.13.0'
browser: webkit

steps:
Expand All @@ -324,7 +324,7 @@ jobs:
path: |
node_modules
**/node_modules
key: install-${{ matrix.node-version }}-${{ hashFiles('yarn.lock', '.yarnrc.yml', '.github/workflows/ci.yml', 'examples/*/yarn.lock', 'packages/*/package.json', 'packages/*/yarn.lock') }}
key: install-${{ matrix.node-version }}-${{ hashFiles('package-lock.json', '.npmrc', '.github/workflows/ci.yml', 'examples/*/package-lock.json', 'packages/*/package.json', 'packages/*/package-lock.json') }}
fail-on-cache-miss: true

- uses: 'actions/cache@v5'
Expand All @@ -338,16 +338,16 @@ jobs:
fail-on-cache-miss: true

- if: ${{ matrix.target == 'Node' }}
run: 'yarn workspace @getodk/xpath test:types'
run: 'npm run test:types -w=packages/xpath'

- if: ${{ matrix.target == 'Node' }}
run: 'yarn workspace @getodk/xpath test-node:jsdom'
run: 'npm run test-node:jsdom -w=packages/xpath'

- if: ${{ matrix.target == 'Web' }}
run: 'yarn playwright install ${{ matrix.browser }} --with-deps'
run: 'npx playwright install ${{ matrix.browser }} --with-deps'

- if: ${{ matrix.target == 'Web' }}
run: 'yarn workspace @getodk/xpath test-browser:${{ matrix.browser }}'
run: 'npm run test-browser:${{ matrix.browser }} -w=packages/xpath'

web-forms:
name: '@getodk/web-forms'
Expand All @@ -358,16 +358,16 @@ jobs:
fail-fast: false
matrix:
target: ['Node']
node-version: ['20.19.3', '22.12.0', '24.11.0']
node-version: ['20.19.3', '22.12.0', '24.13.0']
include:
- target: 'Web'
node-version: '24.11.0'
node-version: '24.13.0'
browser: chromium
- target: 'Web'
node-version: '24.11.0'
node-version: '24.13.0'
browser: firefox
- target: 'Web'
node-version: '24.11.0'
node-version: '24.13.0'
browser: webkit

steps:
Expand All @@ -383,7 +383,7 @@ jobs:
path: |
node_modules
**/node_modules
key: install-${{ matrix.node-version }}-${{ hashFiles('yarn.lock', '.yarnrc.yml', '.github/workflows/ci.yml', 'examples/*/yarn.lock', 'packages/*/package.json', 'packages/*/yarn.lock') }}
key: install-${{ matrix.node-version }}-${{ hashFiles('package-lock.json', '.npmrc', '.github/workflows/ci.yml', 'examples/*/package-lock.json', 'packages/*/package.json', 'packages/*/package-lock.json') }}
fail-on-cache-miss: true

- uses: 'actions/cache@v5'
Expand All @@ -397,24 +397,24 @@ jobs:
fail-on-cache-miss: true

- if: ${{ matrix.target == 'Node' }}
run: 'yarn workspace @getodk/web-forms test:types'
run: 'npm run test:types -w=packages/web-forms'

- if: ${{ matrix.target == 'Node' }}
run: 'yarn workspace @getodk/web-forms test-node:jsdom'
run: 'npm run test-node:jsdom -w=packages/web-forms'

- if: ${{ matrix.target == 'Web' }}
run: 'yarn playwright install ${{ matrix.browser }} --with-deps'
run: 'npx playwright install ${{ matrix.browser }} --with-deps'

# TODO: hopefully temporary! Attempt to mitigate flakiness in webkit by
# running twice when first run fails. At least in local testing, this has
# been near (if not at) 100% success.
- if: ${{ matrix.target == 'Web' && matrix.browser == 'webkit' }}
run: 'yarn workspace @getodk/web-forms test-browser:${{ matrix.browser }} || yarn workspace @getodk/web-forms test-browser:${{ matrix.browser }}'
run: 'npm run test-browser:${{ matrix.browser }} -w=packages/web-forms || npm run test-browser:${{ matrix.browser }} -w=packages/web-forms'

- if: ${{ matrix.target == 'Web' && matrix.browser != 'webkit' }}
run: 'yarn workspace @getodk/web-forms test-browser:${{ matrix.browser }}'
run: 'npm run test-browser:${{ matrix.browser }} -w=packages/web-forms'

- if: ${{ matrix.node-version == '24.11.0' && matrix.target == 'Node' }}
- if: ${{ matrix.node-version == '24.13.0' && matrix.target == 'Node' }}
uses: actions/upload-artifact@v7
with:
name: dist-demo
Expand Down
16 changes: 8 additions & 8 deletions .github/workflows/e2e-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
strategy:
fail-fast: false
matrix:
node-version: ['22.12.0']
node-version: ['24.13.0']
browser: [chromium, firefox, webkit]

steps:
Expand All @@ -27,7 +27,7 @@ jobs:
path: |
node_modules
**/node_modules
key: install-${{ matrix.node-version }}-${{ hashFiles('yarn.lock', '.yarnrc.yml', '.github/workflows/ci.yml', 'examples/*/yarn.lock', 'packages/*/package.json', 'packages/*/yarn.lock') }}
key: install-${{ matrix.node-version }}-${{ hashFiles('package-lock.json', '.npmrc', '.github/workflows/ci.yml', 'examples/*/package-lock.json', 'packages/*/package.json', 'packages/*/package-lock.json') }}
fail-on-cache-miss: true

- uses: 'actions/cache@v5'
Expand All @@ -40,10 +40,10 @@ jobs:
key: build-${{ matrix.node-version }}-${{ github.sha }}
fail-on-cache-miss: true

- run: 'yarn playwright install ${{ matrix.browser }} --with-deps'
- run: 'npx playwright install ${{ matrix.browser }} --with-deps'

- name: 'Run functional e2e tests'
run: 'yarn workspace @getodk/web-forms test:e2e:functional:${{ matrix.browser }}'
run: 'npm run test:e2e:functional:${{ matrix.browser }} -w=packages/web-forms'

- name: 'Upload Playwright results'
if: always()
Expand All @@ -61,7 +61,7 @@ jobs:
strategy:
fail-fast: false
matrix:
node-version: ['22.12.0']
node-version: ['24.13.0']
browser: [chromium, firefox, webkit]

steps:
Expand All @@ -77,7 +77,7 @@ jobs:
path: |
node_modules
**/node_modules
key: install-${{ matrix.node-version }}-${{ hashFiles('yarn.lock', '.yarnrc.yml', '.github/workflows/ci.yml', 'examples/*/yarn.lock', 'packages/*/package.json', 'packages/*/yarn.lock') }}
key: install-${{ matrix.node-version }}-${{ hashFiles('package-lock.json', '.npmrc', '.github/workflows/ci.yml', 'examples/*/package-lock.json', 'packages/*/package.json', 'packages/*/package-lock.json') }}
fail-on-cache-miss: true

- uses: 'actions/cache@v5'
Expand All @@ -90,11 +90,11 @@ jobs:
key: build-${{ matrix.node-version }}-${{ github.sha }}
fail-on-cache-miss: true

- run: 'yarn playwright install ${{ matrix.browser }} --with-deps'
- run: 'npx playwright install ${{ matrix.browser }} --with-deps'

# xvfb-run is used for visual tests to compare snapshots more accurately.
- name: 'Run visual e2e tests'
run: 'xvfb-run --auto-servernum yarn workspace @getodk/web-forms test:e2e:visual:${{ matrix.browser }}'
run: 'xvfb-run --auto-servernum npm run test:e2e:visual:${{ matrix.browser }} -w=packages/web-forms'

- name: 'Upload Playwright results'
if: always()
Expand Down
Loading