Commit Graph
17 Commits
Author SHA1 Message Date
Environment TestandClaude Sonnet 4.6 0b8e16a45d test(lint): add markdown link checker and fix all broken links
Add tests/lint/repository/test_markdown_links.py — a hard-fail lint
test that scans all git-tracked markdown files for broken relative and
repo-root-absolute links. Skips external URLs, anchor-only links, fenced
code blocks, and placeholder targets.

Apply documentation.md rules to all staged files: add emojis after
headlines in docs files, remove emojis from role README headings,
standardize Credits sections to the canonical format, remove empty
sections and orphaned sentences referring to missing documentation files,
fix raw URLs and incorrect link text across role READMEs and docs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 22:00:46 +02:00
Environment TestandClaude Sonnet 4.6 d8996c2d0f docs(artefact): restructure image/mirror docs and move code/role to artefact/files/role
- Rename artefact/image.md to artefact/image/origin.md and merge code/role/image.md into it
- Move artefact/mirror.md to artefact/image/mirror.md
- Move docs/contributing/code/role/ to docs/contributing/artefact/files/role/
- Rename readme_base.md to readme_md.md
- Apply documentation.md standards (emojis, RFC 2119, link text) to all modified files
- Fix all cross-references broken by the directory restructuring
- Remove publish section from mirror.md (module deleted in prior commit)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 15:33:19 +02:00
Environment TestandClaude Sonnet 4.6 aa33256cde feat(mirror): split resolver output, move images to defaults, add lookup plugin
- resolver: output both applications: (config/main.yml compose images) and
  images: (defaults/main.yml images) keyed by source_file
- image_discovery: scan defaults/main.yml instead of vars/main.yml for images:
- mirror_overrides: write mirror URLs to applications.*.compose.services.*
  (mirror_policy-aware) and images_overrides.*.* (always merged, if_missing)
- roles/sys-ctl-hlth-csp, roles/test-e2e-playwright: move images: from
  vars/main.yml to defaults/main.yml for correct Ansible variable precedence
- plugins/lookup/image.py: new Ansible lookup plugin that prefers
  images_overrides over role-local images defaults
- docs: add artefact/image.md and artefact/mirror.md as SPOTs; add
  code/role/image.md contributor guide; link from ci.md
- tests: update test_util, test_mirror_overrides; add test_resolver,
  test_publish (404/401 coverage), test_image (lookup plugin)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 11:17:42 +02:00
Environment Test 5bc6ce74b5 debug: add disk diagnostics before playwright 2026-04-09 20:39:24 +02:00
Environment TestandClaude Sonnet 4.6 9ea2ad6ff1 refactor(docker): introduce utils/docker/image_discovery as single SPOT for image enumeration
- Move iter_role_images + all helpers + ImageRef from cli/mirror/util.py and
  cli/mirror/model.py into utils/docker/image_discovery.py; add source_file field
  to ImageRef to distinguish config/main.yml vs vars/main.yml entries
- Delete cli/mirror/util.py; update all callers to import from utils.docker.image_discovery
- Move utils into subpackages: utils/docker/ (image_ref, paths_utils, hadolint) and
  utils/roles/ (dependency_resolver, resource_validation); update all imports
- Reorganise tests into subpackages: tests/lint/docker/dockerfile/, tests/integration/docker/,
  tests/unit/utils/docker/, tests/unit/utils/roles/; fix parents[N] offsets after relocation
- tests/lint/docker/test_image_versions.py now uses iter_role_images (same SPOT as mirror)
- Add vars/main.yml images.<name>.{image,version} support for non-application roles
  (test-e2e-playwright, sys-ctl-hlth-csp); eliminate hardcoded duplicates in defaults/tasks
- Add web-app-matrix matrix-chatgpt-bot and web-app-mini-qr mini-qr entries in config/main.yml;
  replace hardcoded image strings in vars/templates with lookup('config', ...) references
- Fix sync/__main__.py log line to use correct registry prefix for non-Docker-Hub images
- Update docs/contributing/code/role/dockerfile.md with image declaration rules and SPOT reference

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-09 19:32:31 +02:00
kevinveenbirkenbachandClaude Sonnet 4.6 10bdf4fe18 fix(test-e2e-playwright): set retries to 2 to reduce flaky test failures
Transient issues (DNS timeout, slow CI runner) no longer cause immediate
failure — each test gets up to 2 retries before being marked as failed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 20:31:38 +02:00
kevinveenbirkenbachandClaude Sonnet 4.6 6fa3637005 fix(test-e2e-playwright): accept any non-error HTTP response in readiness wait
Accept 1xx/2xx/3xx (status < 400) instead of only [200, 302] so that apps
returning 301 (e.g. simpleicons redirecting to sphinx docs) are correctly
recognised as ready. Also set follow_redirects=none so the wait checks the
app itself rather than its redirect target.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 20:23:53 +02:00
kevinveenbirkenbachandClaude Sonnet 4.6 ecda0be568 docs(agents): add role-specific AGENTS.md support and protect test-e2e-playwright
Extend root AGENTS.md with a convention for per-role agent instruction
files, and introduce the first instance for the shared Playwright runner
to enforce minimal, confirmed changes only.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04 15:09:48 +02:00
kevinveenbirkenbach 6f9a819da4 docs: simplify playwright runner readme 2026-03-28 18:33:38 +01:00
kevinveenbirkenbach 0eec4eee50 test-e2e-playwright: load optional app vars 2026-03-28 07:24:07 +01:00
kevinveenbirkenbachandClaude Sonnet 4.6 d0b662a4c2 fix(playwright): fix timeout, selectors and first-run wizard modal
- Increase global test timeout from 60s to 300s; the OIDC login flow
  alone can consume the full 60s budget, causing timeouts in subsequent
  wait steps (waitForVisibleCandidate at line 171 in the CI logs)

- Replace non-existent NC 30+ selectors verified against the actual
  nextcloud:production-fpm-alpine image:
  - remove [aria-controls="header-menu-user-menu"] (not in NC 30+)
  - remove settingsMenuButton role "Settings menu" (not confirmed)
  - replace #content-vue / #appmenu with #header-start__appmenu
    (layout.user.php uses <nav id="header-start__appmenu">)
  - remove #logout (no such ID in layout.user.php)

- Dismiss the firstrunwizard modal before clicking the user menu:
  firstrunwizard-activate.mjs opens a NcModal after DOMContentLoaded
  on first login; its .modal-mask intercepts all clicks and would
  cause the user-menu click to fail silently on first login

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-23 22:35:08 +01:00
kevinveenbirkenbach 10d6f179c3 test(playwright): use uri_retry for readiness check 2026-03-20 14:03:18 +01:00
kevinveenbirkenbach a93729e780 Remove local Playwright recording wrapper 2026-03-18 22:30:09 +01:00
kevinveenbirkenbach aef39f7542 Refactor central Playwright runner files 2026-03-18 22:16:46 +01:00
kevinveenbirkenbach 19c8701735 Run Playwright E2E without MODE_TEST gate 2026-03-18 00:16:26 +01:00
kevinveenbirkenbach 1f9a0d9778 feat(test-e2e-playwright): finalize role-based playwright runner and tests 2026-03-17 03:57:35 +01:00
kevinveenbirkenbach f482e7e63a Replace Cypress E2E role with Playwright 2026-03-17 01:57:57 +01:00