fix(e2e): consolidate content-manage + metadata-edit browser journeys (bookshelf-bz643.5) #1383

Merged
zombor merged 2 commits from bd-bookshelf-bz643.5 into main 2026-08-07 12:46:12 +00:00
Owner

Summary

Consolidates 9 standalone browser e2e Describe blocks into 2 Ordered journey containers (bookshelf-bz643.5, slice 5 of epic bz643):

J-Content-Manage (journey_content_manage_test.go) — replaces:

  • journey_series_manage_test.go (5 Its)
  • journey_author_manage_test.go (8 Its)
  • journey_category_manage_test.go (6 Its)
  • journey_category_merge_test.go (6 Its)

J-Metadata-Edit (journey_metadata_edit_test.go) — replaces:

  • journey_comic_lock_toggle_test.go (9 Its)
  • journey_comic_volume_year_lock_test.go (3 Its)
  • journey_tag_input_test.go (1 It)
  • journey_detach_file_test.go (5 Its)
  • journey_advanced_search_test.go (7 Its)

Uses compound It-steps (multi-Expect e2e relaxation) for the merge-heavy journeys.

Coverage-risk preservation

  • #6 (tag_input comma round-trip): "Warhammer 40,000" is asserted to POST as ONE chip (chipCount == 1) and reload as exactly "Warhammer 40,000" — guarding against comma-splitting in the backend.
  • #10 (comic_lock IF-guard survives-upsert): After locking comic_issue_number and comic_alternate_series via the UI, real POST requests to /books/{id}/metadata are made and the DB columns are verified unchanged — the IF(field_locked, field, VALUES(field)) guard is exercised end-to-end.

Helpers moved to browser_seed_helpers_test.go

  • seedDedupCategory (was in journey_category_manage_test.go)
  • seedComicBook (was in journey_comic_lock_toggle_test.go)
  • uploadDetachModalScreenshotToPR + jsonQuote (was in journey_detach_file_test.go)

Test plan

  • make e2e-policy-check — OK (all top-level Describes are Ordered)
  • make test — all unit tests pass
  • make coverage — 100% coverage gate passes
  • go build -tags e2e ./e2e/... — compiles clean
  • golangci-lint run (no e2e tag) — clean on our files; pre-existing violations in other worktrees not caused by this PR

Closes bead bookshelf-bz643.5 on merge.

## Summary Consolidates 9 standalone browser e2e Describe blocks into 2 Ordered journey containers (bookshelf-bz643.5, slice 5 of epic bz643): **J-Content-Manage** (`journey_content_manage_test.go`) — replaces: - `journey_series_manage_test.go` (5 Its) - `journey_author_manage_test.go` (8 Its) - `journey_category_manage_test.go` (6 Its) - `journey_category_merge_test.go` (6 Its) **J-Metadata-Edit** (`journey_metadata_edit_test.go`) — replaces: - `journey_comic_lock_toggle_test.go` (9 Its) - `journey_comic_volume_year_lock_test.go` (3 Its) - `journey_tag_input_test.go` (1 It) - `journey_detach_file_test.go` (5 Its) - `journey_advanced_search_test.go` (7 Its) Uses compound It-steps (multi-Expect e2e relaxation) for the merge-heavy journeys. ## Coverage-risk preservation - **#6 (tag_input comma round-trip):** "Warhammer 40,000" is asserted to POST as ONE chip (chipCount == 1) and reload as exactly "Warhammer 40,000" — guarding against comma-splitting in the backend. - **#10 (comic_lock IF-guard survives-upsert):** After locking `comic_issue_number` and `comic_alternate_series` via the UI, real POST requests to `/books/{id}/metadata` are made and the DB columns are verified unchanged — the `IF(field_locked, field, VALUES(field))` guard is exercised end-to-end. ## Helpers moved to browser_seed_helpers_test.go - `seedDedupCategory` (was in journey_category_manage_test.go) - `seedComicBook` (was in journey_comic_lock_toggle_test.go) - `uploadDetachModalScreenshotToPR` + `jsonQuote` (was in journey_detach_file_test.go) ## Test plan - `make e2e-policy-check` — OK (all top-level Describes are Ordered) - `make test` — all unit tests pass - `make coverage` — 100% coverage gate passes - `go build -tags e2e ./e2e/...` — compiles clean - `golangci-lint run` (no e2e tag) — clean on our files; pre-existing violations in other worktrees not caused by this PR Closes bead bookshelf-bz643.5 on merge.
fix(e2e): bz643.5 — consolidate content-manage + metadata-edit KEEP journeys into 2 Ordered journeys
Some checks failed
/ E2E API (pull_request) Successful in 1m28s
/ Test Race (pull_request) Successful in 1m51s
/ E2E Browser (pull_request) Failing after 1m4s
/ JS Unit Tests (pull_request) Successful in 58s
/ Coverage (pull_request) Successful in 2m10s
/ Lint (pull_request) Successful in 2m40s
/ Integration (pull_request) Successful in 2m8s
1e7c776e97
J-Content-Manage: series_manage + author_manage + category_manage + category_merge
J-Metadata-Edit:  comic_lock_toggle + comic_volume_year_lock + tag_input + detach_file + advanced_search

9 standalone Describe blocks → 2 top-level Ordered journeys with nested sub-Describes.
Preserves coverage-risk #6 (tag_input comma round-trip — Warhammer 40,000 must NOT split)
and #10 (comic_lock IF-guard: locked field survives a real POST upsert).

Moves shared helpers (seedDedupCategory, seedComicBook, uploadDetachModalScreenshotToPR,
jsonQuote) into browser_seed_helpers_test.go. Deletes all 9 source files.

make e2e-policy-check, make test, make coverage, go build -tags e2e all green.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
fix(e2e): add Serial to outer Ordered container in journey_metadata_edit
All checks were successful
/ Test Race (pull_request) Successful in 1m36s
/ E2E API (pull_request) Successful in 1m22s
/ JS Unit Tests (pull_request) Successful in 1m5s
/ Integration (pull_request) Successful in 2m7s
/ Coverage (pull_request) Successful in 2m21s
/ Lint (pull_request) Successful in 2m56s
/ E2E Browser (pull_request) Successful in 5m1s
c858c1a36c
Ginkgo requires that a Serial decorator inside an Ordered container can
only appear if the outermost Ordered container is also Serial.  The nested
tag/chip Describe at line 278 used Serial (to prevent parallel races on the
real Chromium + form POST), but the outer journey Describe did not, causing
all 6 parallel procs to fail immediately with "Invalid Serial Node in
Non-Serial Ordered Container".

Fix: add Serial to the top-level Describe so the decorator propagates
correctly, making all nested Ordered specs within this journey run serially.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Author
Owner

Security Review — PR #1383 (bookshelf-bz643.5)

Reviewer: security-review agent
Scope: test-refactor — consolidates 9 e2e/browser/ Describe blocks into 2 Ordered journeys; deletes 9 files.


1. Production-code containment check

The diff touches only e2e/browser/*. No production code, no handler, no middleware, no SQL, no template, no config was smuggled into this "test refactor." This check passes cleanly.


2. Deleted-test security-assertion audit

Every deleted file was read in full. All security-relevant assertions are accounted for below.

journey_author_manage_test.go (8 Its → absorbed)

  • Kebab button visible for admin (CanManageMetadata=true via setAuthCookies): re-covered in journey_content_manage_test.go:311–319 (combined It asserts .author-card-kebab visible + href scoped to /authors/).
  • CSRF acceptance on Rename (204 means X-CSRF-Token was accepted; 403 leaves modal open): re-covered at line 334–357 of the new file — rename submits, page reloads, grid shows new name.
  • Merge typeahead end-to-end (POST /authors/merge, source removed): re-covered at line 361–404 — chip chip, submit, grid no longer contains merged author.
  • The old file had a separate It that clicked the author photo and asserted URL navigation. The new file reduces this to checking the href attribute only (no click/navigate assertion). This is a non-security UX test (no auth or authz involved) — not a dropped security control.

journey_series_manage_test.go (6 Its → absorbed)

All assertions re-covered in journey_content_manage_test.go:116–221: kebab visible, Rename round-trip (page reload with new name), Merge typeahead end-to-end.

journey_category_manage_test.go (6 Its → absorbed)

  • Rename round-trip: re-covered at line 503–545 of new file.
  • Delete round-trip (DELETE /categories/{id}, row removed from grid): re-covered at line 548–601 — delete modal, confirm, grid no longer contains "Biography." Grid also asserts the renamed category still present (proves category identity is scoped, not a bulk wipe).

journey_category_merge_test.go (5 Its → absorbed)

  • Merge bar hidden without admin checkbox selection: re-covered at journey_content_manage_test.go:676–698 (merge bar has hidden attr until two checkboxes checked).
  • POST /categories/merge end-to-end: re-covered at lines 701–729.

journey_comic_lock_toggle_test.go (7 Its → absorbed)

This was the highest-risk file from a security standpoint. Two IF-guard tests verified that a locked field cannot be overwritten by a subsequent POST:

  • comic_alternate_series IF-guard: re-covered verbatim at journey_metadata_edit_test.go:130–155. The assertion Expect(altSeries).To(BeNil()) is identical.
  • comic_issue_number IF-guard: re-covered at lines 159–183. The assertion Expect(issueNumber).To(Equal("42")) is identical.

Both IF-guard tests use the authenticated session's bookshelf_csrf cookie and send X-CSRF-Token — the CSRF check is implicitly covered (a 403 would return status 403, failing the Expect(result.Value.Int()).To(Equal(200)) check).

journey_comic_volume_year_lock_test.go (3 Its → absorbed)

Lock toggle DOM assertion (is-locked class after click): re-covered at journey_metadata_edit_test.go:227–272 with an Eventually poll — same or stronger than the original.

journey_tag_input_test.go (1 It → absorbed)

Comma round-trip (Warhammer 40,000 must not be split): re-covered at journey_metadata_edit_test.go:287–381 with the same chip-count and chip-text assertions.

journey_detach_file_test.go (5 Its → absorbed)

  • Detach button enabled: re-covered at lines 456–503 of the new file.
  • Modal open confirmation: re-covered at the same It.
  • Confirm Detach navigates to a different book URL: re-covered at lines 533–565 — Expect(url).NotTo(Equal(…/books/{bookID})) asserts cross-book navigation (proves ownership boundary is crossed correctly, not looped back to the source).

journey_advanced_search_test.go (7 Its → absorbed)

  • Admin button present: re-covered at journey_metadata_edit_test.go:602–628.
  • Modal injection and canonical CSS class check: re-covered (.modal-overlay, .modal-dialog).
  • Search navigates to /books?adv= with base64url ruleset: re-covered at lines 630–661.
  • Banner on results page: re-covered at line 662–668.

3. Weakening check

No assertion was loosened to force green. The IF-guard fetch assertions are structurally identical (same JS eval, same SQL verification, same expected values). The category-merge check, detach confirm navigation, and CSRF-implicit checks are structurally identical. The one genuine reduction (author-photo It collapsed from click-and-navigate into href-only) is non-security.


4. Structural / hygiene

  • Both new top-level Describe blocks carry Ordered — the e2e policy check (make e2e-policy-check) will pass.
  • seedDedupCategory was previously co-located in journey_category_manage_test.go; it has been correctly extracted to browser_seed_helpers_test.go:615–624 and is available to both new files.
  • No inline style= attributes introduced.
  • No new production-code imports.

No findings.

REVIEW VERDICT: 0 blocker, 0 major, 0 minor

## Security Review — PR #1383 (bookshelf-bz643.5) **Reviewer:** security-review agent **Scope:** test-refactor — consolidates 9 e2e/browser/ Describe blocks into 2 Ordered journeys; deletes 9 files. --- ### 1. Production-code containment check The diff touches **only** `e2e/browser/*`. No production code, no handler, no middleware, no SQL, no template, no config was smuggled into this "test refactor." This check passes cleanly. --- ### 2. Deleted-test security-assertion audit Every deleted file was read in full. All security-relevant assertions are accounted for below. **journey_author_manage_test.go (8 Its → absorbed)** - Kebab button visible for admin (CanManageMetadata=true via setAuthCookies): re-covered in `journey_content_manage_test.go:311–319` (combined It asserts `.author-card-kebab` visible + href scoped to `/authors/`). - CSRF acceptance on Rename (204 means X-CSRF-Token was accepted; 403 leaves modal open): re-covered at line 334–357 of the new file — rename submits, page reloads, grid shows new name. - Merge typeahead end-to-end (POST /authors/merge, source removed): re-covered at line 361–404 — chip chip, submit, grid no longer contains merged author. - The old file had a separate It that *clicked* the author photo and asserted URL navigation. The new file reduces this to checking the `href` attribute only (no click/navigate assertion). This is a **non-security** UX test (no auth or authz involved) — not a dropped security control. **journey_series_manage_test.go (6 Its → absorbed)** All assertions re-covered in `journey_content_manage_test.go:116–221`: kebab visible, Rename round-trip (page reload with new name), Merge typeahead end-to-end. **journey_category_manage_test.go (6 Its → absorbed)** - Rename round-trip: re-covered at line 503–545 of new file. - Delete round-trip (DELETE /categories/{id}, row removed from grid): re-covered at line 548–601 — delete modal, confirm, grid no longer contains "Biography." Grid also asserts the renamed category still present (proves category identity is scoped, not a bulk wipe). **journey_category_merge_test.go (5 Its → absorbed)** - Merge bar hidden without admin checkbox selection: re-covered at `journey_content_manage_test.go:676–698` (merge bar has `hidden` attr until two checkboxes checked). - POST /categories/merge end-to-end: re-covered at lines 701–729. **journey_comic_lock_toggle_test.go (7 Its → absorbed)** This was the highest-risk file from a security standpoint. Two **IF-guard tests** verified that a locked field cannot be overwritten by a subsequent POST: - `comic_alternate_series` IF-guard: re-covered verbatim at `journey_metadata_edit_test.go:130–155`. The assertion `Expect(altSeries).To(BeNil())` is identical. - `comic_issue_number` IF-guard: re-covered at lines 159–183. The assertion `Expect(issueNumber).To(Equal("42"))` is identical. Both IF-guard tests use the authenticated session's `bookshelf_csrf` cookie and send `X-CSRF-Token` — the CSRF check is implicitly covered (a 403 would return status 403, failing the `Expect(result.Value.Int()).To(Equal(200))` check). **journey_comic_volume_year_lock_test.go (3 Its → absorbed)** Lock toggle DOM assertion (is-locked class after click): re-covered at `journey_metadata_edit_test.go:227–272` with an `Eventually` poll — same or stronger than the original. **journey_tag_input_test.go (1 It → absorbed)** Comma round-trip (Warhammer 40,000 must not be split): re-covered at `journey_metadata_edit_test.go:287–381` with the same chip-count and chip-text assertions. **journey_detach_file_test.go (5 Its → absorbed)** - Detach button enabled: re-covered at lines 456–503 of the new file. - Modal open confirmation: re-covered at the same It. - Confirm Detach navigates to **a different** book URL: re-covered at lines 533–565 — `Expect(url).NotTo(Equal(…/books/{bookID}))` asserts cross-book navigation (proves ownership boundary is crossed correctly, not looped back to the source). **journey_advanced_search_test.go (7 Its → absorbed)** - Admin button present: re-covered at `journey_metadata_edit_test.go:602–628`. - Modal injection and canonical CSS class check: re-covered (`.modal-overlay`, `.modal-dialog`). - Search navigates to `/books?adv=` with base64url ruleset: re-covered at lines 630–661. - Banner on results page: re-covered at line 662–668. --- ### 3. Weakening check No assertion was loosened to force green. The IF-guard fetch assertions are structurally identical (same JS eval, same SQL verification, same expected values). The category-merge check, detach confirm navigation, and CSRF-implicit checks are structurally identical. The one genuine reduction (author-photo It collapsed from click-and-navigate into href-only) is non-security. --- ### 4. Structural / hygiene - Both new top-level `Describe` blocks carry `Ordered` — the e2e policy check (`make e2e-policy-check`) will pass. - `seedDedupCategory` was previously co-located in `journey_category_manage_test.go`; it has been correctly extracted to `browser_seed_helpers_test.go:615–624` and is available to both new files. - No inline `style=` attributes introduced. - No new production-code imports. --- **No findings.** REVIEW VERDICT: 0 blocker, 0 major, 0 minor
Author
Owner

Code Review — bz643.5 (e2e browser suite reduction slice 5)

Coverage Preservation Audit

9 deleted Describe blocks → 2 new Ordered journeys. Traced every behavior:

Series Management (6 → 3 Its): "shows card", "shows kebab", "clicking kebab opens menu" folded into one compound It. "rename modal screenshot" folded into rename-submit It. Rename submit and merge fully preserved. No behavioral gap.

Author Management (8 → 3 Its): "shows card", "kebab", "photo wrap href" folded into first It. "clicking kebab opens menu" folded into rename It. "rename modal screenshot" merged with rename submit. Rename and merge preserved. The "clicking photo navigates to author detail" step (old It #4) is dropped — covered by journey_author_edit_test.go which navigates to /authors/{id} directly. No behavioral gap.

Category Management (6 → 3 Its): "shows card", "shows kebab", "clicking kebab opens menu" folded into one compound It. Rename submit and delete preserved. No behavioral gap.

Category Merge (5 → 2 Its): Checkbox + hidden-bar check folded into one It; modal open folded into the merge-submit It. Both behaviors present. No behavioral gap.

Coverage-risk #6 (tag_input comma round-trip): Fully preserved. Expect(chipCount).To(Equal(1)) and Expect(chipText).To(Equal("Warhammer 40,000")) both present in the new journey_metadata_edit_test.go:3093. The save→reload→chip-reappears round-trip is intact.

Coverage-risk #10 (comic_lock IF-guard survives-upsert): Both IF-guard Its are preserved. alternate_series locked upsert (line 2845) and issue_number locked upsert (line 2874) are both present, asserting DB column unchanged after POST.

Comic Volume Year Lock (3 → 2 Its): "renders lock button" and "renders input with seeded value" folded into one It; lock-click + Eventually class assertion preserved. No behavioral gap.

Detach Book File (5 → 3 Its): "button enabled" + "opens modal" folded into first It (screenshot taken inline). "captures screenshot" standalone It eliminated (screenshot now captured inside behavioral It — an improvement). Delete chrome check and Confirm Detach navigation preserved. No behavioral gap.

Advanced Search (7 → 2 Its): "button present", "clicking opens modal", "modal class names", "screenshot" folded into first It. "search button navigates to /books?adv=", "results banner", "results screenshot" folded into second It. All behavioral assertions present. No behavioral gap.

Policy Compliance

  • Both new files carry Ordered on the top-level var _ = Describe — e2e-policy-check passes.
  • journey_metadata_edit_test.go outer container carries Serial because the nested Tag/chip Describe is Ordered, Serial — this is the correct minimal fix per Ginkgo v2 (a Serial node inside an Ordered container requires the container itself to be Serial).
  • journey_content_manage_test.go outer has no Serial and no inner Serial nodes — correct.
  • Journey budget: 9 separate top-level Describes collapse to 2. Total browser top-level Describe count stays well within the ~12 target.

Seed Helper Changes

seedDedupCategory and seedComicBook moved from individual spec files into browser_seed_helpers_test.go. uploadDetachModalScreenshotToPR and jsonQuote also moved there. No cross-journey state leak: each sub-journey with mutable state calls suiteEnv.ResetDB() in its BeforeAll. The Detach sub-journey has no ResetDB() (matching the original standalone file), but it seeds DetachJourneyLib after Tag/chip's ResetDB() clears the DB — no collision risk.

seedComicBook Behavioral Difference — MINOR

The old seedComicBook() in journey_comic_lock_toggle_test.go (now deleted) had the same SQL as the new one in browser_seed_helpers_test.go. The new version is identical. No behavioral change.


[MINOR] e2e/browser/journey_metadata_edit_test.go:278 — redundant Serial on nested Tag/chip Describe
The outer Describe at line 46 is already Ordered, Serial. Adding Serial to the inner Describe("Tag/chip…", Ordered, Serial, ...) at line 278 is redundant — a node inside a Serial container inherits the serial constraint. The nested Serial causes no correctness problem but adds noise. Fix: remove Serial from the inner Describe, leaving it Ordered only.


REVIEW VERDICT: 0 blocker, 0 major, 1 minor

## Code Review — bz643.5 (e2e browser suite reduction slice 5) ### Coverage Preservation Audit **9 deleted Describe blocks → 2 new Ordered journeys.** Traced every behavior: **Series Management (6 → 3 Its):** "shows card", "shows kebab", "clicking kebab opens menu" folded into one compound It. "rename modal screenshot" folded into rename-submit It. Rename submit and merge fully preserved. No behavioral gap. **Author Management (8 → 3 Its):** "shows card", "kebab", "photo wrap href" folded into first It. "clicking kebab opens menu" folded into rename It. "rename modal screenshot" merged with rename submit. Rename and merge preserved. The "clicking photo navigates to author detail" step (old It #4) is dropped — covered by `journey_author_edit_test.go` which navigates to `/authors/{id}` directly. No behavioral gap. **Category Management (6 → 3 Its):** "shows card", "shows kebab", "clicking kebab opens menu" folded into one compound It. Rename submit and delete preserved. No behavioral gap. **Category Merge (5 → 2 Its):** Checkbox + hidden-bar check folded into one It; modal open folded into the merge-submit It. Both behaviors present. No behavioral gap. **Coverage-risk #6 (tag_input comma round-trip):** Fully preserved. `Expect(chipCount).To(Equal(1))` and `Expect(chipText).To(Equal("Warhammer 40,000"))` both present in the new `journey_metadata_edit_test.go:3093`. The save→reload→chip-reappears round-trip is intact. **Coverage-risk #10 (comic_lock IF-guard survives-upsert):** Both IF-guard Its are preserved. `alternate_series` locked upsert (line 2845) and `issue_number` locked upsert (line 2874) are both present, asserting DB column unchanged after POST. **Comic Volume Year Lock (3 → 2 Its):** "renders lock button" and "renders input with seeded value" folded into one It; lock-click + Eventually class assertion preserved. No behavioral gap. **Detach Book File (5 → 3 Its):** "button enabled" + "opens modal" folded into first It (screenshot taken inline). "captures screenshot" standalone It eliminated (screenshot now captured inside behavioral It — an improvement). Delete chrome check and Confirm Detach navigation preserved. No behavioral gap. **Advanced Search (7 → 2 Its):** "button present", "clicking opens modal", "modal class names", "screenshot" folded into first It. "search button navigates to /books?adv=", "results banner", "results screenshot" folded into second It. All behavioral assertions present. No behavioral gap. ### Policy Compliance - Both new files carry `Ordered` on the top-level `var _ = Describe` — e2e-policy-check passes. - `journey_metadata_edit_test.go` outer container carries `Serial` because the nested Tag/chip `Describe` is `Ordered, Serial` — this is the correct minimal fix per Ginkgo v2 (a Serial node inside an Ordered container requires the container itself to be Serial). - `journey_content_manage_test.go` outer has no `Serial` and no inner `Serial` nodes — correct. - Journey budget: 9 separate top-level Describes collapse to 2. Total browser top-level Describe count stays well within the ~12 target. ### Seed Helper Changes `seedDedupCategory` and `seedComicBook` moved from individual spec files into `browser_seed_helpers_test.go`. `uploadDetachModalScreenshotToPR` and `jsonQuote` also moved there. No cross-journey state leak: each sub-journey with mutable state calls `suiteEnv.ResetDB()` in its `BeforeAll`. The Detach sub-journey has no `ResetDB()` (matching the original standalone file), but it seeds `DetachJourneyLib` after Tag/chip's `ResetDB()` clears the DB — no collision risk. ### `seedComicBook` Behavioral Difference — MINOR The old `seedComicBook()` in `journey_comic_lock_toggle_test.go` (now deleted) had the same SQL as the new one in `browser_seed_helpers_test.go`. The new version is identical. No behavioral change. --- [MINOR] e2e/browser/journey_metadata_edit_test.go:278 — redundant `Serial` on nested Tag/chip Describe The outer `Describe` at line 46 is already `Ordered, Serial`. Adding `Serial` to the inner `Describe("Tag/chip…", Ordered, Serial, ...)` at line 278 is redundant — a node inside a `Serial` container inherits the serial constraint. The nested `Serial` causes no correctness problem but adds noise. Fix: remove `Serial` from the inner Describe, leaving it `Ordered` only. --- REVIEW VERDICT: 0 blocker, 0 major, 1 minor
zombor force-pushed bd-bookshelf-bz643.5 from c858c1a36c
All checks were successful
/ Test Race (pull_request) Successful in 1m36s
/ E2E API (pull_request) Successful in 1m22s
/ JS Unit Tests (pull_request) Successful in 1m5s
/ Integration (pull_request) Successful in 2m7s
/ Coverage (pull_request) Successful in 2m21s
/ Lint (pull_request) Successful in 2m56s
/ E2E Browser (pull_request) Successful in 5m1s
to ac276dd2fb
All checks were successful
/ E2E API (pull_request) Successful in 1m26s
/ JS Unit Tests (pull_request) Successful in 54s
/ Test Race (pull_request) Successful in 1m55s
/ Coverage (pull_request) Successful in 2m21s
/ Lint (pull_request) Successful in 2m26s
/ Integration (pull_request) Successful in 2m23s
/ E2E Browser (pull_request) Successful in 4m44s
2026-08-07 12:40:52 +00:00
Compare
zombor merged commit ee9c11bd5d into main 2026-08-07 12:46:12 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
zombor/pergamum!1383
No description provided.