Loading files
442335385This file is pinned to the selected release. Download the original to open it in your design tool.
name: Experience checks
on:
pull_request:
paths: ['store/**', 'desktop/assets/engine-icons/**', '.github/workflows/experience-checks.yml']
push:
branches: [main]
paths: ['store/**', 'desktop/assets/engine-icons/**', '.github/workflows/experience-checks.yml']
permissions:
contents: read
jobs:
models-and-viewer:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
with:
node-version: '22.23.2'
- name: Verify generated artifacts match reviewed sources
run: |
sh store/agents/voxel-worlds/toolchain/setup.sh
sh store/agents/drone-pilot/toolchain/setup.sh
sh store/agents/game-master/toolchain/setup.sh
sh store/agents/lab-bench/toolchain/setup.sh
node store/agents/lab-bench/toolchain/build-math.mjs --check
node store/tools/build-experiences.mjs --check
- name: Verify packaged branding matches desktop assets
run: node store/tools/build-experience-branding.mjs --check
- name: Check models, packages and viewer behavior
run: >-
node --test
store/tools/experience-tests/models.test.mjs
store/agents/{voxel-worlds,generative-art,music-studio,creative-direction,drone-pilot,game-master,lab-bench}/test/*.test.mjs
store/viewers/web-viewer/test/*.test.mjs
- name: Validate Store catalog
run: node store/tools/catalog.mjs
- name: Check FreeCAD contracts and delivery (native suite is opt-in)
run: node --test store/agents/freecad/test/*.test.mjs
- name: Check Score contracts, MIDI and delivery (native suite is opt-in)
run: node --test store/agents/score/test/*.test.mjs
- name: Install Score from scratch and engrave with its managed runtime
env:
SCORE_RUNTIME_DIR: ${{ runner.temp }}/score-runtime
run: |
sh store/agents/score/toolchain/setup.sh
sh store/agents/score/toolchain/doctor.sh
score_workspace="$(mktemp -d "$RUNNER_TEMP/score-project.XXXXXX")"
cp -R store/agents/score/template/. "$score_workspace/"
HARNESS_WORKSPACE="$score_workspace" sh store/agents/score/skills/score/scripts/render-score.sh
- name: Check OpenSCAD contracts and delivery (native suite is opt-in)
run: node --test store/agents/openscad/test/*.test.mjs
- name: Check OrcaSlicer briefs, G-code and delivery (native suite is opt-in)
run: node --test store/agents/orca-slicer/test/*.test.mjs
- name: Check Data Studio imports, SQL, real SQLite delivery and failure guards
run: node --test store/agents/data-studio/test/*.test.mjs
authoring-browser:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
with:
node-version: '22.23.2'
- name: Install pinned browser tools
run: |
npm ci --prefix store/tools/experience-tests --ignore-scripts --no-audit --no-fund
node store/tools/experience-tests/node_modules/playwright-core/cli.js install --with-deps chromium
node -e 'require("fs").appendFileSync(process.env.GITHUB_ENV, "BROWSER_EXECUTABLE=" + require("./store/tools/experience-tests/node_modules/playwright-core").chromium.executablePath() + "\n")'
- name: Edit real projects and reopen their exports
env:
EXPERIENCE_IDS: generative-art,music-studio,creative-direction
run: node store/tools/experience-tests/browser.mjs
- name: Edit, walk and export a Voxel Worlds project in the browser
env:
VOXEL_QA_ROOT: work/experience-evidence/tidelands-browser
run: |
npm ci --prefix store/agents/voxel-worlds/toolchain --ignore-scripts --no-audit --no-fund
node store/agents/voxel-worlds/test/browser.mjs
node store/agents/voxel-worlds/test/acceptance.mjs
- name: Edit survey geometry, import flight evidence and reopen field kits
env:
DRONE_QA_ROOT: work/experience-evidence/vector-browser
DRONE_ACCEPTANCE_ROOT: work/experience-evidence/vector-acceptance
run: |
npm ci --prefix store/agents/drone-pilot/toolchain --ignore-scripts --no-audit --no-fund
node store/agents/drone-pilot/test/browser.mjs
node store/agents/drone-pilot/test/acceptance.mjs
python3 -m venv /tmp/vector-geometry-reader
/tmp/vector-geometry-reader/bin/pip install shapely==2.0.7 numpy==1.26.4
/tmp/vector-geometry-reader/bin/python store/agents/drone-pilot/test/verify-delivery.py work/experience-evidence/vector-acceptance
- name: Install print verification tools
run: |
sudo apt-get update -qq
sudo apt-get install -y poppler-utils
- name: Create, play, revise and print original tabletop games
env:
GAME_QA_ROOT: work/experience-evidence/relay-browser
GAME_ACCEPTANCE_ROOT: work/experience-evidence/relay-acceptance
run: |
npm ci --prefix store/agents/game-master/toolchain --ignore-scripts --no-audit --no-fund
node store/agents/game-master/test/browser.mjs
node store/agents/game-master/test/acceptance.mjs
python3 store/agents/game-master/test/verify-delivery.py work/experience-evidence/relay-acceptance
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
with:
python-version: '3.12'
- name: Plan experiments, import measurements and independently verify the delivered statistics
env:
LAB_QA_ROOT: work/experience-evidence/signal-browser
LAB_ACCEPTANCE_ROOT: work/experience-evidence/signal-acceptance
run: |
npm ci --prefix store/agents/lab-bench/toolchain --ignore-scripts --no-audit --no-fund
node store/agents/lab-bench/test/browser.mjs
node store/agents/lab-bench/test/acceptance.mjs
node store/agents/lab-bench/test/reopen-deliveries.mjs work/experience-evidence/signal-acceptance
python3 -m venv /tmp/signal-statistics-reader
/tmp/signal-statistics-reader/bin/pip install -r store/agents/lab-bench/template/studio/requirements.txt
/tmp/signal-statistics-reader/bin/python store/agents/lab-bench/test/verify-delivery.py work/experience-evidence/signal-acceptance
- name: Verify MIDI and aligned audio with independent readers
run: |
python3 -m venv /tmp/music-delivery-reader
/tmp/music-delivery-reader/bin/pip install mido==1.3.3
/tmp/music-delivery-reader/bin/python store/tools/experience-tests/verify-music-delivery.py work/experience-evidence/afterhours-production.zip
- name: Revise and reopen real Data Studio projects in the sandboxed browser
env:
PLAYWRIGHT_MODULE: store/tools/experience-tests/node_modules/playwright-core/index.mjs
DATA_EVIDENCE_DIR: work/data-studio-evidence
run: node store/agents/data-studio/test/browser.mjs
- name: Independently verify Data Studio exports with Python CSV, Decimal and SQLite
run: python3 store/agents/data-studio/test/verify-exports.py work/data-studio-evidence
- name: Revise three brand briefs and verify real print deliveries
run: |
node store/agents/creative-direction/test/acceptance.mjs
python3 store/agents/creative-direction/test/verify-delivery.py work/experience-evidence/forme-acceptance/run-*/acceptance.json
home-assistant-native:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
with:
node-version: '22.23.2'
- name: Install the locked native engine and browser runtimes from scratch
run: |
bash store/agents/home-assistant/toolchain/setup.sh
node store/agents/home-assistant/node_modules/playwright-core/cli.js install --with-deps chromium
echo "HA_PYTHON=$GITHUB_WORKSPACE/store/agents/home-assistant/.runtime/core/bin/python" >> "$GITHUB_ENV"
echo "HA_DSH_DIR=$GITHUB_WORKSPACE/store/agents/home-assistant" >> "$GITHUB_ENV"
echo "PLAYWRIGHT_MODULE=$GITHUB_WORKSPACE/store/agents/home-assistant/node_modules/playwright-core/index.mjs" >> "$GITHUB_ENV"
- name: Test native timers, fixtures, isolation, drafts and failure preservation
run: node --test store/agents/home-assistant/test/*.test.mjs
- name: Edit, revise, export and reopen distinct automation workflows in Chromium
env:
HA_EVIDENCE_DIR: work/home-assistant-evidence
run: node store/agents/home-assistant/test/browser.mjs
- name: Independently verify portable ZIPs, calls, states and exported Core schemas
run: '"$HA_PYTHON" -I store/agents/home-assistant/test/verify-delivery.py work/home-assistant-evidence'