DataTalksClub / DataTalksClub/website

[P0] Align public pagination regression assertions with interactive-lift

Open Beginner friendly
#300 7 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug frontend P0 testing
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/main face8e4808d65afbf0374d1ced7a88079950d663, content/tests/test_public_pagination.py:423-424 still counts the obsolete exact strings:
    • class="filter-pill pagination-number"
    • class="filter-pill pagination-step"
  • templates/public/_pagination.html:46,52,62 emits the accepted classes with interactive-lift appended.
  • 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.py and test_collection_hub.py. #280 is CI evidence orchestration and explicitly excludes product/test pagination changes. This issue therefore owns only the separate test_public_pagination.py stale expectations.
  • Shared paginator behavior and its accepted design-system contract are defined by closed #178.

Scope

Change only content/tests/test_public_pagination.py:

  1. Update the numeric-control count to match class="filter-pill pagination-number interactive-lift" and retain the expected count of 7.
  2. Update the direction-control count to match class="filter-pill pagination-step interactive-lift" and retain the expected count of 2.
  3. 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-lift token 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_pagination passes 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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.