DataTalksClub / DataTalksClub/website
[P0] Align public pagination regression assertions with interactive-lift
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 0
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Description
Product outcome
Restore the public pagination regression contract so the scheduled/full Django gate reflects the accepted shared pagination markup on current main. This is a test-contract correction only: the rendered paginator already intentionally carries the accepted interactive-lift design-system token.
Evidence and ownership boundary
- On current
origin/mainface8e4808d65afbf0374d1ced7a88079950d663,content/tests/test_public_pagination.py:423-424still counts the obsolete exact strings:class="filter-pill pagination-number"class="filter-pill pagination-step"
templates/public/_pagination.html:46,52,62emits the accepted classes withinteractive-liftappended.- The token was introduced by the accepted
a5d08f1(“Unify clickable card and control interactions”), not by a paginator behavior change. - Scheduled run 33513872199 and the integrated v3 Django evidence reproduce the failure; the first failing assertion is line 423.
- The collection-hub/archive class correction remains in #261, whose groomed scope explicitly limits its focused test changes to
test_archive_row.pyandtest_collection_hub.py. #280 is CI evidence orchestration and explicitly excludes product/test pagination changes. This issue therefore owns only the separatetest_public_pagination.pystale expectations. - Shared paginator behavior and its accepted design-system contract are defined by closed #178.
Scope
Change only content/tests/test_public_pagination.py:
- Update the numeric-control count to match
class="filter-pill pagination-number interactive-lift"and retain the expected count of 7. - Update the direction-control count to match
class="filter-pill pagination-step interactive-lift"and retain the expected count of 2. - Keep every other pagination assertion unchanged, including control counts, labels,
aria-current, arrows, page-window/ellipsis behavior, URLs, canonical/SEO/cache semantics, boundary behavior, empty/single-page behavior, and source/design-system guards.
Acceptance criteria
- The candidate changes no production template, CSS, Python application code, fixture data, browser harness, generated projection, or #261/#280-owned path.
- The two rendered-class assertions recognize the accepted
interactive-lifttoken and still prove exactly 7 numeric controls and 2 direction controls on the 12-page middle state. - No assertion is weakened by removing the control class, reducing the expected count, using a broad substring that can match unrelated markup, or changing the paginator to satisfy the test.
-
content.tests.test_public_paginationpasses on the frozen candidate, including all existing query grammar, status, canonical, cache, accessibility, URL-window, boundary, and source-contract cases. - The engineer runs the focused module plus
make format-check,make lint, and the applicable versioned verification checks; an independent tester recomputes the plan and verifies the same frozen candidate. Final full-Django/full-regression evidence must be green after the separately owned #253/#261 and other release blockers are repaired; this issue never waives a red gate. - Screenshots are
not_applicable: only a regression test file changes and no rendered product input changes.
Non-goals
- No paginator implementation, template, CSS, accessibility, URL, SEO, copy, or visual change.
- No archive-row/collection-hub class work, normalization/type work, formatter repair, or structured-evidence workflow work from #261/#280.
- No test deletion, skip, xfail, quarantine, timeout/retry change, assertion weakening, or broad test refactor.
- No commit, push, merge, deployment, or workflow rerun as implementation evidence before engineer/tester/PM gates.
Dependencies and handoff
No implementation dependency. This is a small independent testing/frontend lane and may be implemented without waiting for #261 because the changed file does not overlap #261's allowed paths. Final release verification remains subject to the common green-base/order recorded in #253/#261 and the release coordinator.
The engineer works uncommitted in an isolated worktree, posts the versioned handoff, and freezes it. A separate tester performs the focused and graph-selected checks. PM accepts only from a passing tester envelope; the orchestrator then owns commit/merge/push under _docs/PROCESS.md.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in content/tests/test_public_pagination.py at assertions around lines 423-424, then compare them with the classes emitted at templates/public/_pagination.html lines 46, 52, and 62. Run content.tests.test_public_pagination first, followed by make format-check, make lint, and applicable versioned checks; done means only the two assertions recognize interactive-lift while all existing checks pass.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- django, python
- Domain
- testing
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 90/100