Skip to content

test(ELITEA-1739): search skills by name (skills module, first case) - #130

Merged
bermudas merged 1 commit into
mainfrom
tests/ELITEA-1739-search-skills-by-name
Jul 10, 2026
Merged

test(ELITEA-1739): search skills by name (skills module, first case)#130
bermudas merged 1 commit into
mainfrom
tests/ELITEA-1739-search-skills-by-name

Conversation

@bermudas

Copy link
Copy Markdown
Owner

Summary

  • Implements ELITEA-1739 ("search skills by name") as the skills module's first automated spec (tests/skills.spec.ts), per the re-verified AFS at test-specs/skills/l3_search-skills-by-name_ELITEA-1739.md.
  • Adds two new page objects: tests/pages/skillForm.page.ts (create-form) and tests/pages/skillsList.page.ts (list/search) — greenfield module, no prior skills test surface existed.
  • Key correctness detail carried over from the AFS's own re-verification: the main Skills list only filters after Enter is pressed post-fill()fill() alone only opens a typeahead tooltip. Both phases are asserted separately (step 7 pre-Enter, step 7b post-Enter).
  • Idempotent setup: ensureSkillsExist() checks for each of the 3 slug-valid skill names (formatter/code-reviewer/content-writer) before creating it, since the account may already carry them from an earlier analyst pass.
  • Bundles the analyst's AFS file (test-specs/skills/l3_search-skills-by-name_ELITEA-1739.md) into this PR, since it was left uncommitted on disk per the analyst's own dispatch instruction.

Implementer-side fixes found during Phase 4/5 (infrastructure, not product defects)

  • A first-run onboarding tour ("Jump in now!") and the recurring release-notes banner (GH#42) can both intercept the sidebar "Skills" nav click in a freshly-created browser.newContext({ storageState }) — the worker-scoped fixture's own dismissal (done in the login context) doesn't reliably carry over. Fixed with gotoSkillsListViaSidebar() (dismiss-then-click, with one retry if diverted to /app/onboarding).
  • ensureSkillsExist() originally raced a bare .count() immediately after page.goto(), misdetecting an existing "formatter" skill as missing and creating a live duplicate (caught, and the duplicate manually deleted via the confirmed Skills delete-confirmation dialog, before re-running). Fixed by waiting for the authoritative GET .../skills/prompt_lib/... list response before checking.

Flagged for Tal (not actioned in this PR)

  • trackConsoleErrors() is now duplicated in a 6th spec file, past .agents/testing.md's own "do not let a 6th module land before this happens" note on the deferred shared-fixture extraction (tests/fixtures/auth.ts + console-tracking helper). Framework-architecture decision, left for a dedicated framework-scale PR per Hard Rule (implementer executes plans, doesn't invent them).

Test plan

  • npx playwright test --grep "ELITEA-1739" — green 3/3 consecutive local runs, no flake.
  • Verified idempotency: account left with exactly 3 skills (no duplicates) after all runs.
  • No CI variant yet (.agents/testing.md: "no CI yet ... 'CI' and 'local' are the same command").

Refs #127

… (tests/skills.spec.ts)

Greenfield skills module: adds SkillFormPage/SkillsListPage page objects and
the ELITEA-1739 search-by-name test, per the re-verified AFS (Enter-key
required to trigger the main list filter, not fill() alone). Bundles the
analyst's AFS file into this PR per workflow convention.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant