Repository navigation
Tests: 0.9.0 cross-feature and review-fix coverage - #511
Closed
fabiodalez-dev wants to merge 36 commits into
Closed
fabiodalez-dev wants to merge 36 commits into
fabiodalez-dev wants to merge 36 commits into
Conversation
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Test-only PR on top of the 0.9.0 stack (#502 → #510), plus two small fixes the new tests exposed. I am covering what the per-feature specs do not exercise: flows that cross several 0.9.0 features, the late review fixes, zero-config equivalence with 0.8.9, and the quoted-search rule (#501) on the search boxes the stack added.
54 new tests: 35 Playwright E2E + 19 unit checks, all green on my local slot (Apache + PHP-FPM, MySQL 9.6), run one file at a time and then all three spec files together (35/35).
CI: every 0.9.0 Playwright suite now runs in the E2E workflow
.github/workflows/ci-e2e.ymllisted its specs one by one and none of the 36 suites added by the 0.9.0 stack ran there. I added a job,0.9.0 feature suites, with two groups that run in parallel next to the existing full E2E job:circulation-card,circulation-consultation,circulation-interop,circulation-patron-types,circulation-reservations,circulation-rules-matrix,circulation-settings-access,closures-calendar-admin,closures-calendar-circulation,closures-calendar-loans,debt-block,fines-closed-days,fines-ledger,fines-patron-types,stack-090-integration,stack-090-review-fixes,stack-090-zero-config.attendance-090,catalogue-cards-090,inventory-stocktake, the sevenissue-501-*suites,marc-bulk-export,marc-bulk-import,marc-copy-cataloging,patron-cards,patron-photo,rda-types-090,statistics-090,suppliers-090,user-import.The job uses the same environment as the deep regression shards: Apache with mod_php, MySQL 8, Mailpit behind a real sendmail transport (msmtp), the CI MySQL wrapper, a fresh install bootstrapped by
full-test.spec.js, then the shared seed fixtures (plugin preflight, archives, catalogue). I addedpoppler-utils, becausepatron-cardsandpatron-photoread the generated PDFs back.patron-photoruns with Chromium's fake camera, so nothing is skipped for hardware.The result audit (
scripts/ci-audit-playwright-results.js) gained an optionalPLAYWRIGHT_MAX_SKIPPEDceiling. The new job sets it to 0: a test that skips, for whatever reason, fails the gate. Each spec list is explicit and every listed file must exist, so a new suite is added on purpose. The Playwright CI policy check passes (254 specs classified).Green run on the branch head: https://github.com/fabiodalez-dev/Pinakes/actions/runs/40751777057 (all three jobs). circulation 199 passed in 17.5 min of tests (29.6 min job), catalogue 209 passed in 10.8 min (23.4 min job), 0 skipped, 0 flaky, 0 retries. The existing full E2E job stays green (19.5 min). Locally on my slot, each group in one invocation: catalogue 209/209, circulation 199/199.
No app bug came out of the CI run: every suite passed on the fresh CI install at the first attempt. While reviewing the cleanup code for a fresh database I fixed the restore issues the review pointed out (570e846):
ncip-serverandmobile-apiare deactivated again when the suite activated them, and the activation is checked;Bugs found and fixed here
app/Views/fornitori/index.php). It is the one search box of the stack that filters in the browser, and it used a plainincludes(): a quoted"Müller"matched nothing, because the quotes were searched as characters, and an unquotedmullerdid not find Müller. It now follows the ExactSearch rules: unquoted words ignore accents and case, a quoted group (straight or typographic quotes) keeps the exact spelling with case ignored, every term has to match, and a box with only quotes filters nothing. The quote hint shown under the other admin filters is now under this box too (the string is already translated in all five locales). E1–E3 fail on the previous view and pass with the fix.Marc21LibriMapper::entryName()). When$akeeps its final period because it ends with an initial (Istituto X.), the name was joined to its unit asIstituto X.. Ufficio studi. Unit check 4 covers it.tests/stack-090-integration.spec.js: 9 E2EThe same reader goes through patron type, closures, fines and the debt block, all from the admin UI. The global fine settings stay empty, so every charge and block comes from the patron type.
5–7. The website, the Mobile API (
not_eligiblewith the debt message) and NCIP (User Ineligible) refuse the reader.tests/stack-090-zero-config.spec.js: 8 E2EThe install is put in the "nothing configured" state (empty calendar and matrix, empty fine settings) and restored afterwards.
loan_duration_days.loan_duration_daysand counts one renewal.loan_duration_days, pickup deadline afterpickup_expiry_days.{{multa}}placeholder) and there is no fine email.6–8. A reader who owes 50,00 in the ledger is not blocked on the website, the Mobile API or NCIP. The NCIP due date is today +
loan_duration_days.tests/stack-090-review-fixes.spec.js: 18 E2E/admin/calendarlands on the dashboard with the admin-only message. Every calendar POST from staff (weekdays, closures create/update/delete, preset, ICS import) is refused and changes nothing. The administrator still edits the same closure. On the visitor log, staff sees no retention or purge form, the direct POSTs change nothing, and the administrator's purge removes the old visit.duplicate_request, and the page says so.$ein the name and reads$jas the relator (curatore). An overwrite that turns a book into a DVD clears the RDA overrides of the old material. An overwrite with the same media type keeps them. A book with 450 long-named contributors, exported from the book list selection, comes out as a reduced record instead of being skipped.tests/stack-090-review-fixes.unit.php: 19 checksThese run automatically through
scripts/ci-run-unit-tests.sh(glob).extraColumnUpdates()on a create, on a media change with no overrides, and on a media change that replaces some overrides and clears the others (3).dueDateFor()without a calendar across month ends and DST (4).FineCalculatorwith closed weekends and the grace threshold (2).LIKE ?on typed input in the 0.9.0 search code (the stocktake shelf-mark range is the only allowlisted one), and the suppliers box keeps the quote tokenizer and the hint.Checks
scripts/ci-check-locales.py: clean (no new strings).suppliers-090.spec.jsandmarc-bulk-import.spec.js(15/15), plus themarc-library,marc-import-robustness,sru-roles-danmarc2,unimarc-standardsandmarc-oai-byte-identityunit tests.Summary by CodeRabbit