Canonical home for Bluefin GUI/system test content (behave + qecore-headless + dogtail) and shared step libraries.
| Concern | Canonical repo |
|---|---|
| Infrastructure (ArgoCD, KubeVirt, manifests, CronWorkflows) | projectbluefin/testing-lab |
| Test framework and suite content (feature files, steps, qecore/dogtail patterns) | projectbluefin/testsuite |
| Layer | Tool | Purpose |
|---|---|---|
| BDD runner | behave | Gherkin scenarios and step binding |
| Session bridge | qecore-headless | Wayland/DBus session bootstrap |
| GUI automation | dogtail (AT-SPI) | Accessibility-tree interactions |
| Wayland bridge | gnome-ponytail-daemon | Coordinate injection support |
| Shell bridge | org.gnome.Shell.Eval |
GNOME 50+ top-bar fallback path |
just lint # validate Argo manifests
just list-stubs # inspect not-yet-implemented scenariosAuthoring rules, patterns, and skill docs → docs/skills/
Start with docs/skills/index.md.
Any GNOME-based OS built as a bootc/ostree image can run this test suite as a PR gate on standard ubuntu-latest runners — no self-hosted hardware, no Argo, no ghost required.
Add to your repo's .github/workflows/e2e.yml:
name: E2E Tests
on:
pull_request:
jobs:
test:
uses: projectbluefin/testsuite/.github/workflows/e2e.yml@main
with:
image: ghcr.io/myorg/myimage:latest # your bootc OCI image
suites: smoke # smoke | developer | dx | software | vanilla-gnomeFor full control over artifact naming, concurrency, or triggering:
jobs:
e2e:
runs-on: ubuntu-latest
timeout-minutes: 90
steps:
- name: Run GNOME e2e
id: test
uses: projectbluefin/testsuite/.github/actions/gnome-e2e@main
with:
image: ghcr.io/myorg/myimage:latest
suite: smoke
- name: Upload results
if: always()
uses: actions/upload-artifact@v4
with:
name: e2e-results-${{ github.run_id }}
path: results/
- name: Fail on test failures
if: steps.test.outputs.behave-rc != '0'
run: exit 1- OCI image must be a bootc/ostree image (uses
bootc install to-disk) gnome-ponytail-daemonmust be baked into the image (Wayland coordinate bridge)- Supported GUI suites:
smoke,developer,dx,software,vanilla-gnome lifecycle,security,hardwareuse a different SSH-only mode (not yet in this action)
| Input | Default | Description |
|---|---|---|
image |
— | OCI image ref to test (required) |
suite |
smoke |
Test suite name |
testsuite-ref |
action ref | projectbluefin/testsuite git ref for test content |
memory |
4096 |
VM RAM in MB |
cpus |
4 |
VM CPU count |
free-disk-space |
true |
Run disk cleanup before provisioning |
| Tag | Image |
|---|---|
latest |
ghcr.io/ublue-os/bluefin:latest |
lts |
ghcr.io/ublue-os/bluefin:lts |
gts and lts-hwe are invalid for Bluefin.