Add live tests for issue tracker cards#4735
Conversation
Preview deploymentsHost Test Results 1 files ±0 1 suites ±0 2h 3m 41s ⏱️ - 2m 2s Results for commit b208f5e. ± Comparison against earlier commit fc3f8b4. Realm Server Test Results 1 files ±0 1 suites ±0 13m 40s ⏱️ - 2m 31s Results for commit b208f5e. ± Comparison against earlier commit fc3f8b4. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: fc3f8b4e96
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| relationships: projectId | ||
| ? { project: { links: { self: projectId } } } | ||
| : {}, | ||
| meta: { adoptsFrom: issueCodeRef }, |
There was a problem hiding this comment.
Create darkfactory issues from the board
When the board is used via the new darkfactory entrypoint (the prompts and fixtures now tell agents to adopt IssueTracker/Issue from darkfactory), the add-card flow still writes meta.adoptsFrom from the local issue-tracker module. The factory scheduler only searches for { module: this.darkfactoryModuleUrl, name: 'Issue' } in packages/software-factory/src/issue-scheduler.ts, so issues created with the board add button won't be picked up by the issue loop even though they appear on the board. The create flow should use the same module as the active darkfactory board/Project issue type instead of hard-coding issueCodeRef.
Useful? React with 👍 / 👎.
|
so these tests don't actually exercise the DOM of the issue tracker cards, shouldn't we be doing that in the tests? We can add a new playwright spec tests in software factory that do that |
There was a problem hiding this comment.
Pull request overview
This PR extends the software-factory issue-tracker work (building on #4650) by adding realm “live tests” for IssueTracker board interactions, refactoring realm card definitions into separate files, and wiring additional IssueTracker functionality (notably open-card support) alongside some fixture and schema-test updates.
Changes:
- Added QUnit live tests for IssueTracker kanban board interactions (placement, hide-empty, status edits, keyboard drag, add-card).
- Refactored software-factory realm definitions: extracted AgentProfile/KnowledgeArticle/Comment/StatusPill/Kanban types, renamed IssueOption → IssueOptionField, and added new relationships (e.g. Issue.relatedKnowledge).
- Updated fixtures, runtime schema tests, and Boxel UI kanban test selectors to support the new tests and structure.
Reviewed changes
Copilot reviewed 33 out of 36 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| pnpm-lock.yaml | Adds lock entry for ember-concurrency dependency. |
| packages/software-factory/package.json | Adds ember-concurrency dependency for realm code usage. |
| packages/software-factory/tests/runtime-schema.spec.ts | Adds schema fetch test for IssueTracker. |
| packages/software-factory/tests/factory-seed.spec.ts | Waits for bootstrap seed issue to be indexed before reading it. |
| packages/software-factory/test-fixtures/darkfactory-adopter/Boards/demo-board.json | Adds an adopter fixture IssueTracker board card. |
| packages/software-factory/src/factory-tool-builder.ts | Updates tool/docs strings to include IssueTracker in tracker-schema card list. |
| packages/software-factory/src/factory-seed.ts | Updates bootstrap seed instructions/acceptance criteria to include IssueTracker creation. |
| packages/software-factory/realm/tsconfig.json | Expands TS paths/types/includes to support QUnit live tests and host/boxel-ui imports. |
| packages/software-factory/realm/status-pill.gts | Adds reusable StatusPill component (Pill wrapper). |
| packages/software-factory/realm/knowledge-article.gts | Extracts KnowledgeArticle card def from prior monolith. |
| packages/software-factory/realm/kanban-config.gts | Updates to IssueOptionField and related types. |
| packages/software-factory/realm/kanban-column.gts | Adds KanbanColumnField FieldDef + edit/embedded UI. |
| packages/software-factory/realm/kanban-board.gts | Extracts KanbanBoardPlacement and imports it from new module. |
| packages/software-factory/realm/kanban-board-placement.gts | New FieldDef for persisting kanban placements. |
| packages/software-factory/realm/issue-tracker.test.gts | Adds live tests for IssueTracker board interactions. |
| packages/software-factory/realm/issue-tracker.gts | Adds open-card action, refactors IssueTracker isolated view, and adds knowledge relationships. |
| packages/software-factory/realm/issue-option.gts | Renames IssueOption to IssueOptionField and updates component types. |
| packages/software-factory/realm/darkfactory.gts | Replaces monolithic card definitions with re-exports and keeps DarkFactory card. |
| packages/software-factory/realm/comment.gts | Extracts Comment FieldDef into its own module. |
| packages/software-factory/realm/agent-profile.gts | Extracts AgentProfile card def into its own module. |
| packages/software-factory/prompts/bootstrap-implement.md | Updates bootstrap prompt to include IssueTracker board creation steps. |
| packages/software-factory/.agents/skills/software-factory-operations/SKILL.md | Documents IssueTracker board JSON path/adoptsFrom. |
| packages/software-factory/.agents/skills/software-factory-bootstrap/SKILL.md | Documents IssueTracker board creation in bootstrap flow. |
| packages/realm-server/scripts/bench-realm/fixtures/realm-snapshot/Boards/sticky-note.json | Adds board fixture to bench realm snapshot. |
| packages/experiments-realm/Project/bc838c6e-6a12-4331-94ff-c7c3e7e96d0b.json | Updates adoptsFrom.module path. |
| packages/experiments-realm/KanbanBoard/c19a0bfe-d6ee-4e87-8680-927813a59e08.json | Updates adoptsFrom.module path. |
| packages/experiments-realm/IssueTracker/b97d905f-7cd7-4e21-ba07-b7163d188729.json | Renames adoptsFrom.name to IssueTracker and updates module path. |
| packages/experiments-realm/Issue/hbs-6.json | Adds relatedKnowledge relationship link and updates module path. |
| packages/experiments-realm/Issue/hbr-1.json | Updates adoptsFrom.module path. |
| packages/experiments-realm/Issue/hbr-2.json | Updates adoptsFrom.module path. |
| packages/experiments-realm/Issue/hbr-3.json | Updates adoptsFrom.module path. |
| packages/experiments-realm/Issue/hbr-4.json | Updates adoptsFrom.module path. |
| packages/experiments-realm/Issue/hbr-5.json | Updates adoptsFrom.module path. |
| packages/boxel-ui/test-app/tests/integration/components/kanban-plane-test.gts | Switches assertions to use new data-test hooks instead of CSS classes. |
| packages/boxel-ui/addon/src/components/kanban/plane-inner.gts | Adds data-test hooks for over-WIP and empty-column elements. |
| packages/boxel-ui/addon/src/components/kanban/column-header.gts | Adds data-test hooks for column name/WIP/add-button elements. |
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| { | ||
| module: rri(`${sourceRealm}issue-tracker`), | ||
| name: 'IssueTracker', | ||
| }, | ||
| ); |
This file is this for this PR specifically: realms/issue-tracker.test.gts Everything else is from #4650 that's awaiting approval |
one thing I i do that that more clear is used stacked PR, swhere the merge is into the parent PR--this it's more clear to see what specifically is different in the child PR. then right before you actually go to do the merge, you can use github UI to change the parent back to main. |
Good idea, makes sense. Thanks |
| setupAcceptanceTestRealm, | ||
| SYSTEM_CARD_FIXTURE_CONTENTS, | ||
| visitOperatorMode, | ||
| } from '@cardstack/host/tests/helpers'; |
There was a problem hiding this comment.
This is the first instance of using the test realm in the software factory. up to this point we've been testing with an actual realm with a full boxel stack (via the test-harness). so this isn't really as faithful in terms of a real realm as the playwright specs are. but i think it's ok, as you'll be able to use ember test helpers in this test which are much more powerful and concise for DOM testing than playwright. but probably we need to be clear around the rules for when we want to actually use a real live complete boxel environment for testing vs uses an in-browser realm like this tests does. if you want to spell out the rules for when to use in-browser realms vs real node realms that would be cool.
also i noticed that we don't have @cardstack/host in our package.json's devDependencies. probably we need that. i think it happens to be transitively included right now which is why its working, but we should actually spell it out in the package.json
There was a problem hiding this comment.
Added missing dependencies, updated readme about tests, and resolved relevant copilot catches
fc3f8b4 to
b208f5e
Compare
This PR builds on #4650
Note: The file to review for this PR:
packages/software-factory/realms/issue-tracker.test.gtsEverything else is from #4650 that's awaiting approval