Introduce dedicated CI container images and improve the component
test execution in Gitea Actions.
The workflow now uses reproducible runner environments, private
registry authentication and executes Playwright component tests
inside a prepared container.
- Changed push branch filter to wildcard '*' to test feature branches before merging
- Kept the missing pnpm/node setup fix for the component-tests job
- Changed push branch filter to wildcard '*' to test feature branches before merging
- Kept the missing pnpm/node setup fix for the component-tests job
Every job runs in an isolated container. The component-tests job
was missing the Node.js and pnpm installation steps, causing
command not found errors (exit code 127) during local execution.
Adds automated checks that were previously only run manually and
locally, closing the last remaining gap before dev can be merged
into main with confidence.
Runs on every push and pull request targeting dev or main:
- lint (eslint)
- format check (prettier --check)
- changeset presence check (non-blocking for now, see comment in
workflow file)
- unit tests (vitest)
- component/browser tests (vitest + playwright, via the existing
Docker test setup)
Fixes: #10
The Playwright version was pinned with a caret range and the test
Dockerfile deleted pnpm-lock.yaml before installing, so every image
build silently re-resolved to the latest matching Playwright version.
This caused the npm package and the Docker base image to drift apart.
- packages/luna-charts/package.json: pin playwright to 1.62.1 exactly
- Dockerfile.test: stop deleting pnpm-lock.yaml before install, and
use --frozen-lockfile so a mismatch between package.json and the
lockfile fails the build loudly instead of resolving silently
Playwright was previously pinned with a caret range (^1.61.1), which
allowed pnpm to silently resolve a newer minor version after the
lockfile was regenerated. This caused a version mismatch with the
Docker test image, which still referenced 1.61.1.
- packages/luna-charts/package.json: pin playwright to 1.62.1 exactly
- Dockerfile.test: bump base image to v1.62.1-noble to match
The README was missing instructions for running the documentation
site and Storybook locally, so contributors had to guess or dig
through package.json scripts to find them. Documents the existing
`pnpm run docs` command and the current Storybook workflow, including
the known limitation that it must be run from within
`packages/luna-charts` until a root-level filter script is set up.
add root command for documentation development
Expose the Astro documentation development server through the root
workspace to simplify the local development workflow. Developers can
now start the documentation site without changing into the docs directory.
Fixes: #12
add repository mirror and issue tracking notice
To prevent fragmentation of feedback, we want all bug reports and
contributions to be centralized on our main self-hosted platform.
GitHub lacks active monitoring for issues, so users need clear
direction on where to officially open them.
Explicitly added @oxc-parser/binding-linux-x64-gnu and @rolldown/binding-linux-x64-gnu as devDependencies. This bypasses issues where pnpm occasionally skips optional native platform bindings during installation, which previously caused CriticalPresetLoadError when loading StencilJS plugins.
Adds a proper project README (description, tech stack, structure,
setup, scripts) and a CONTRIBUTING guide (governance summary,
workflow, PR expectations), both previously missing or placeholder-only.
Adds the containerized Playwright-based test execution environment
(Dockerfile.test, docker-compose.test.yaml) to the Technology
Architecture, which was implemented but never documented.
- Added Section 6.6 "Test Execution Environment" describing the
Docker-based Playwright setup used for local development and CI
- Added the containerized test environment to the "Key Architectural
Decisions" list
- Added a Change Log entry explaining what changed and why
Cleans up leftover configuration from the apps/ → docs/ restructuring
(see ADR-0001 update). Neither file had any effect anymore since the
apps/ directory no longer exists, but both left stale references that
could confuse future contributors.
- pnpm-workspace.yaml: removed the unused "apps/*" package glob
- .changeset/config.json: removed the "ignore": ["apps/docs"] entry,
since docs/ is not tracked as a pnpm workspace package and the
entry had no effect
Corrects two Architecture Decision Records that had drifted from the
actual implementation during this sprint.
- ADR-0002 (Technology Stack): unit testing now uses Vitest instead of
Jest; Playwright's role is clarified as the browser provider used by
Vitest's browser mode rather than a standalone test runner.
- ADR-0001 (Repository Structure): repository diagram updated to
remove the unused apps/ directory, correct the docs/ path to match
the actual Starlight content location, and add the previously
missing adm/ folder.
Both ADRs now include a Change Log section documenting what changed
and why, per the Architecture Change Management process (ADM Phase H).
- Add supportedArchitectures (linux-x64-gnu) to pnpm-workspace.yaml so native bindings (rolldown, esbuild) are included in the lockfile for the container's platform
- Add onlyBuiltDependencies: [playwright] to pnpm-workspace.yaml so build scripts run non-interactively in CI/Docker
- Remove stale/redundant pnpm field from package.json (moved to pnpm-workspace.yaml per pnpm v10+ config location)
- Split stencil-test into test:unit (native, fast) and test:browser (Docker, cross-browser) scripts
- Set ENV CI=true in Dockerfile.test to avoid interactive TTY prompts during pnpm install
- Remove anonymous node_modules volumes from docker-compose.test.yaml to prevent stale volume state from surviving image rebuilds
- Add root-level test:unit / test:component / test scripts to orchestrate native unit tests and Dockerized cross-browser tests
Add required `title`/`description` frontmatter and remove the redundant H1 heading so new ADRs created from this template conform to Starlight's content collection schema by default.