Skip to content

test(e2e): make create --parent and edit --field self-configuring - #798

Merged
Zious11 merged 1 commit into
developfrom
test/e2e-dynamic-parent-editfield
Sep 10, 2026
Merged

test(e2e): make create --parent and edit --field self-configuring#798
Zious11 merged 1 commit into
developfrom
test/e2e-dynamic-parent-editfield

Conversation

@Zious11

@Zious11 Zious11 commented Sep 10, 2026

Copy link
Copy Markdown
Owner

Summary

Test-infra-only PR. Makes two #[ignore]-gated live-E2E tests in tests/e2e_live.rs self-configuring so they run in nightly e2e.yml out-of-the-box instead of clean-skipping — applying the same pattern PR #796 used for the mention round-trip tests.

  • test_e2e_issue_parent_roundtrip: when JR_E2E_PARENT_KEY is unset, seeds a throwaway parent via seed_issue and self-closes it (plus the child) via a Drop-guard (ParentChildDropGuard, mirrors AttachmentDropGuard/ComponentDropGuard); discovers the project's sub-task type via discover_subtask_type (jr api) when JR_E2E_CHILD_TYPE is unset. A caller-supplied JR_E2E_PARENT_KEY override is never closed by teardown.
  • test_e2e_issue_edit_custom_field: when JR_E2E_EDIT_FIELD is unset, discovers a safe editable string field via editmeta (prefers Environment), writes a benign value, verifies via fresh GET.
  • The three env vars (JR_E2E_PARENT_KEY, JR_E2E_CHILD_TYPE, JR_E2E_EDIT_FIELD) become optional overrides (were previously required-to-enable). Docs updated: CLAUDE.md reclassification + three new rows in docs/specs/e2e-live-jira-testing.md.
  • Diff is test + docs only — no src/, Cargo.toml, or CI-workflow change.

This is a test-infra PR, not a story — no stubs, no Red Gate, no demo evidence per repo convention for this class of change.

Verification already done (local)

  • Rebased clean onto develop @ a1f37995 (no conflicts).
  • cargo build — clean.
  • cargo teste2e_live compiles; 30 run / 77 ignored, 0 failed. Offline guards all pass: test_e2e_gate_disabled_when_env_unset, test_every_ignored_test_has_gate_guard, e2e_cli_surface_guard (10/10), claude_md_citations (61/61).
  • cargo clippy --all-targets -- -D warnings — clean.
  • cargo fmt --all -- --check — clean.
  • Local code-reviewer verdict: CLEAN, ready to PR — no must-fix findings.

Known limitation (non-blocking, accepted risk)

discover_safe_edit_field filters only on schema.type == "string". On a project whose only non-Environment editable string field is a validated-format subtype (e.g. a URL custom field), the dynamic path could hit a real 400 instead of clean-skipping. This is nightly/non-blocking with no data risk, and the Environment-preferred discovery order avoids it on the canonical E2E project. Flagging as a follow-up / accepted risk for reviewer visibility rather than blocking on it here.

Test plan

  • cargo build
  • cargo test (offline guards + compile check for e2e_live)
  • cargo clippy --all-targets -- -D warnings
  • cargo fmt --all -- --check
  • Local code-reviewer pass
  • Nightly e2e.yml run against live Jira (out of scope for this PR's CI; will self-configure automatically once merged)

https://claude.ai/code/session_01RT2HKoqmH3Yf9Dyn5v5oeX

…namic, no static vars)

Mirrors the self-mention `/myself` default (PR #796): JR_E2E_PARENT_KEY,
JR_E2E_CHILD_TYPE, and JR_E2E_EDIT_FIELD become optional overrides instead
of required pairings.

- test_e2e_issue_parent_roundtrip: discovers the project's sub-task issue
  type via GET /rest/api/3/project/<key> when JR_E2E_CHILD_TYPE is unset,
  and seeds a fresh throwaway parent via seed_issue when JR_E2E_PARENT_KEY
  is unset. New ParentChildDropGuard closes the seeded parent (never a
  caller-supplied override) plus the created child on teardown. Asserts
  fields.parent.key via a fresh fetch_raw GET rather than the create
  response.
- test_e2e_issue_edit_custom_field: discovers a safe string field via
  GET .../editmeta when JR_E2E_EDIT_FIELD is unset — preferring the
  standard "Environment" field, else the first other editable string
  field excluding summary/description — writes a benign generated value,
  and verifies it via a fresh GET. The override path is unchanged.

Docs: docs/specs/e2e-live-jira-testing.md §8 and CLAUDE.md's E2E env-var
reference now describe all three vars as optional overrides with dynamic
defaults, matching JR_E2E_MENTION_ACCOUNT_ID's documented pattern.

Claude-Session: https://claude.ai/code/session_01FitXFyeeyQ7zUuRVTgb7hd
@Zious11
Zious11 merged commit 3a874d9 into develop Sep 10, 2026
24 checks passed
@Zious11
Zious11 deleted the test/e2e-dynamic-parent-editfield branch September 10, 2026 19:12
Zious11 added a commit that referenced this pull request Sep 10, 2026
…nding item (v4.01->4.02)

WIP branch test/e2e-dynamic-parent-editfield was confirmed NOT redundant
with #796 (distinct area: create --parent / edit --field self-configuring
live-E2E tests, built atop #796); rebased onto develop, exit-gates
verified green, local code-reviewer CLEAN, and MERGED to develop @
3a874d9 via PR #798. Worktree .worktrees/E2E-DYNAMIC and both
local+remote branches cleaned up; local develop fast-forwarded to
3a874d9.

- Marked E2E-CI-DYNAMIC-TESTS-WIP-UNVERIFIED RESOLVED in Drift/Standing
  Items (SESSION-WRAP PAUSE table) and its cross-note under
  MAINTENANCE-CLAUDE-MD-COMPACTION-2026-09-10 item 1
- Appended Phase Progress row E2E-CI-DYNAMIC-TESTS-DELIVERED-2026-09-10
  (COMPLETE, no quality gate)
- Added one new OPEN follow-up: E2E-DISCOVER-SAFE-EDIT-FIELD-VALIDATED-SUBTYPE
  (LOW/MEDIUM, non-blocking, from PR #798 code review)
- Left the other two MAINTENANCE follow-ups intact (STATE.md /compact-state
  candidate; vsdd-factory compact-claude-md engine-gap)

Pipeline stays PAUSED throughout -- no phase transition, no cycle change.
Counts unchanged (754 BCs / 76 VPs / 118 holdouts / 175 stories).
Recomputed wc -l and refreshed the SIZE BUDGET banner: 428 -> 444 lines.

Folds in benign concurrent churn (regression-state.json command/timestamp
bump, sidecar-learning.md routine session-ended log lines) per the
established single-atomic-commit pattern.

Claude-Session: https://claude.ai/code/session_01RT2HKoqmH3Yf9Dyn5v5oeX
Zious11 added a commit that referenced this pull request Sep 10, 2026
…4.05)

Pipeline stays PAUSED throughout -- all six tracked cycles (001-006) CLOSED,
no OPEN cycle. This session delivered cycle-005 (adf-mentions, #674) through
F7 close, then four maintenance follow-ups: CLAUDE.md compaction (#797 @
a1f3799), E2E-CI dynamic-tests WIP resolution (#798 @ 3a874d9),
mutants-nightly rebalance (#799 @ 78aeb86), and STATE.md /compact-state
(447->196). No WIP branches outstanding.

Single atomic burst (TD-VSDD-053): archived the prior (v4.04) Session Resume
Checkpoint to cycles/cycle-005/session-checkpoints.md (Superseded at
2026-09-10), then wrote a new checkpoint covering position, convergence
counter (N/A), in-flight work (none), pending human decisions
(MUTANTS-NIGHTLY-VERIFY-FULL-RUN, VSDD-FACTORY-COMPACT-CLAUDE-MD-GAP), WIP
branch list (none), and the exact resume command. Appended a Phase Progress
row. version: 4.04->4.05. STATE.md 196->212 lines. Counts unchanged
(754/76/118/175); trajectory-tail unchanged.

Claude-Session: https://claude.ai/code/session_01RT2HKoqmH3Yf9Dyn5v5oeX
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