| #314 Resume data stays consistent | Tested | 5 tests in 1 file- passed
resume.spec.ts:5 every bullet a version lists exists, is public, and has a known role [site] - passed
resume.spec.ts:21 every bullet group names existing public bullets, and every included group exists [site] - passed
resume.spec.ts:39 no version lists a bullet twice, even across its groups [site] - passed
resume.spec.ts:47 a bullet in a group shows up in every version that includes the group [site] - passed
resume.spec.ts:58 repeated opening verbs are reported, not forced [site]
| passed 5 passed |
| #315 Each resume version renders its own content on the web | Tested | 74 tests in 2 files- passed
resume-details.spec.ts:134 prints a range, a single year, and an ongoing role the way the resume does [site] - passed
resume-details.spec.ts:140 puts ongoing roles first, then the latest to finish, then the latest to start [site] - passed
resume-details.spec.ts:158 the data has the kinds of role the checks below are meant to cover [site] - passed
resume-details.spec.ts:184 lists its roles newest first, each with its bullets in order [site] - passed
resume-details.spec.ts:195 shows each role's dates, title, note, and positions [site] - passed
resume-details.spec.ts:226 shows the education and certifications in order, with school and dates [site] - passed
resume-details.spec.ts:184 lists its roles newest first, each with its bullets in order [site] - passed
resume-details.spec.ts:195 shows each role's dates, title, note, and positions [site] - passed
resume-details.spec.ts:226 shows the education and certifications in order, with school and dates [site] - passed
resume-details.spec.ts:184 lists its roles newest first, each with its bullets in order [site] - passed
resume-details.spec.ts:195 shows each role's dates, title, note, and positions [site] - passed
resume-details.spec.ts:226 shows the education and certifications in order, with school and dates [site] - passed
resume-details.spec.ts:184 lists its roles newest first, each with its bullets in order [site] - passed
resume-details.spec.ts:195 shows each role's dates, title, note, and positions [site] - passed
resume-details.spec.ts:226 shows the education and certifications in order, with school and dates [site] - passed
resume-details.spec.ts:184 lists its roles newest first, each with its bullets in order [site] - passed
resume-details.spec.ts:195 shows each role's dates, title, note, and positions [site] - passed
resume-details.spec.ts:226 shows the education and certifications in order, with school and dates [site] - passed
resume-details.spec.ts:184 lists its roles newest first, each with its bullets in order [site] - passed
resume-details.spec.ts:195 shows each role's dates, title, note, and positions [site] - passed
resume-details.spec.ts:226 shows the education and certifications in order, with school and dates [site] - passed
resume-details.spec.ts:184 lists its roles newest first, each with its bullets in order [site] - passed
resume-details.spec.ts:195 shows each role's dates, title, note, and positions [site] - passed
resume-details.spec.ts:226 shows the education and certifications in order, with school and dates [site] - passed
resume-details.spec.ts:184 lists its roles newest first, each with its bullets in order [site] - passed
resume-details.spec.ts:195 shows each role's dates, title, note, and positions [site] - passed
resume-details.spec.ts:226 shows the education and certifications in order, with school and dates [site] - passed
resume-details.spec.ts:184 lists its roles newest first, each with its bullets in order [site] - passed
resume-details.spec.ts:195 shows each role's dates, title, note, and positions [site] - passed
resume-details.spec.ts:226 shows the education and certifications in order, with school and dates [site] - passed
resume-details.spec.ts:184 lists its roles newest first, each with its bullets in order [site] - passed
resume-details.spec.ts:195 shows each role's dates, title, note, and positions [site] - passed
resume-details.spec.ts:226 shows the education and certifications in order, with school and dates [site] - passed
resume-details.spec.ts:184 lists its roles newest first, each with its bullets in order [site] - passed
resume-details.spec.ts:195 shows each role's dates, title, note, and positions [site] - passed
resume-details.spec.ts:226 shows the education and certifications in order, with school and dates [site] - passed
resume-details.spec.ts:184 lists its roles newest first, each with its bullets in order [site] - passed
resume-details.spec.ts:195 shows each role's dates, title, note, and positions [site] - passed
resume-details.spec.ts:226 shows the education and certifications in order, with school and dates [site] - passed
resume-details.spec.ts:184 lists its roles newest first, each with its bullets in order [site] - passed
resume-details.spec.ts:195 shows each role's dates, title, note, and positions [site] - passed
resume-details.spec.ts:226 shows the education and certifications in order, with school and dates [site] - passed
resume-details.spec.ts:184 lists its roles newest first, each with its bullets in order [site] - passed
resume-details.spec.ts:195 shows each role's dates, title, note, and positions [site] - passed
resume-details.spec.ts:226 shows the education and certifications in order, with school and dates [site] - passed
resume.spec.ts:188 /resume/ sends visitors to the first resume, the QA lane [site] - passed
resume.spec.ts:75 web page shows the summary, skills, experience, and education [site] - passed
resume.spec.ts:90 shows exactly the skills meant for this version [site] - passed
resume.spec.ts:100 marks the current version and links to its PDF [site] - passed
resume.spec.ts:115 web page uses real organization names [site] - passed
resume.spec.ts:75 web page shows the summary, skills, experience, and education [site] - passed
resume.spec.ts:90 shows exactly the skills meant for this version [site] - passed
resume.spec.ts:100 marks the current version and links to its PDF [site] - passed
resume.spec.ts:115 web page uses real organization names [site] - passed
resume.spec.ts:75 web page shows the summary, skills, experience, and education [site] - passed
resume.spec.ts:90 shows exactly the skills meant for this version [site] - passed
resume.spec.ts:100 marks the current version and links to its PDF [site] - passed
resume.spec.ts:115 web page uses real organization names [site] - passed
resume.spec.ts:75 web page shows the summary, skills, experience, and education [site] - passed
resume.spec.ts:90 shows exactly the skills meant for this version [site] - passed
resume.spec.ts:100 marks the current version and links to its PDF [site] - passed
resume.spec.ts:115 web page uses real organization names [site] - passed
resume.spec.ts:75 web page shows the summary, skills, experience, and education [site] - passed
resume.spec.ts:90 shows exactly the skills meant for this version [site] - passed
resume.spec.ts:100 marks the current version and links to its PDF [site] - passed
resume.spec.ts:115 web page uses real organization names [site] - passed
resume.spec.ts:75 web page shows the summary, skills, experience, and education [site] - passed
resume.spec.ts:90 shows exactly the skills meant for this version [site] - passed
resume.spec.ts:100 marks the current version and links to its PDF [site] - passed
resume.spec.ts:115 web page uses real organization names [site] - passed
resume.spec.ts:75 web page shows the summary, skills, experience, and education [site] - passed
resume.spec.ts:90 shows exactly the skills meant for this version [site] - passed
resume.spec.ts:100 marks the current version and links to its PDF [site] - passed
resume.spec.ts:115 web page uses real organization names [site]
| passed 74 passed |
| #316 Resume print routes match the web page and fit the paper | Tested | 22 tests in 2 files- passed
resume-details.spec.ts:15 the print route of "qa" shows everything, readable, within the page [site] - passed
resume-details.spec.ts:15 the print route of "sdet" shows everything, readable, within the page [site] - passed
resume-details.spec.ts:15 the print route of "con" shows everything, readable, within the page [site] - passed
resume-details.spec.ts:15 the print route of "adp" shows everything, readable, within the page [site] - passed
resume-details.spec.ts:15 the print route of "pmba" shows everything, readable, within the page [site] - passed
resume-details.spec.ts:15 the print route of "it" shows everything, readable, within the page [site] - passed
resume-details.spec.ts:15 the print route of "creative" shows everything, readable, within the page [site] - skipped
resume.spec.ts:169 a neutral version shows alternate organization names in print and real names on the web [site] - passed
resume.spec.ts:122 print route carries the version's summary, bullets, and skills [site] - passed
resume.spec.ts:136 print route follows the version's label mode and has no site chrome [site] - passed
resume.spec.ts:122 print route carries the version's summary, bullets, and skills [site] - passed
resume.spec.ts:136 print route follows the version's label mode and has no site chrome [site] - passed
resume.spec.ts:122 print route carries the version's summary, bullets, and skills [site] - passed
resume.spec.ts:136 print route follows the version's label mode and has no site chrome [site] - passed
resume.spec.ts:122 print route carries the version's summary, bullets, and skills [site] - passed
resume.spec.ts:136 print route follows the version's label mode and has no site chrome [site] - passed
resume.spec.ts:122 print route carries the version's summary, bullets, and skills [site] - passed
resume.spec.ts:136 print route follows the version's label mode and has no site chrome [site] - passed
resume.spec.ts:122 print route carries the version's summary, bullets, and skills [site] - passed
resume.spec.ts:136 print route follows the version's label mode and has no site chrome [site] - passed
resume.spec.ts:122 print route carries the version's summary, bullets, and skills [site] - passed
resume.spec.ts:136 print route follows the version's label mode and has no site chrome [site]
| passed 21 passed, 1 skipped |
| #317 Each resume version has a real PDF | Tested | 24 tests in 1 file- passed
pdfs.spec.ts:28 was generated by the build [site] - passed
pdfs.spec.ts:34 is served as a real PDF with a sensible page count [site] - passed
pdfs.spec.ts:48 was printed from its own version, not another one [site] - passed
pdfs.spec.ts:28 was generated by the build [site] - passed
pdfs.spec.ts:34 is served as a real PDF with a sensible page count [site] - passed
pdfs.spec.ts:48 was printed from its own version, not another one [site] - passed
pdfs.spec.ts:28 was generated by the build [site] - passed
pdfs.spec.ts:34 is served as a real PDF with a sensible page count [site] - passed
pdfs.spec.ts:48 was printed from its own version, not another one [site] - passed
pdfs.spec.ts:28 was generated by the build [site] - passed
pdfs.spec.ts:34 is served as a real PDF with a sensible page count [site] - passed
pdfs.spec.ts:48 was printed from its own version, not another one [site] - passed
pdfs.spec.ts:28 was generated by the build [site] - passed
pdfs.spec.ts:34 is served as a real PDF with a sensible page count [site] - passed
pdfs.spec.ts:48 was printed from its own version, not another one [site] - passed
pdfs.spec.ts:28 was generated by the build [site] - passed
pdfs.spec.ts:34 is served as a real PDF with a sensible page count [site] - passed
pdfs.spec.ts:48 was printed from its own version, not another one [site] - passed
pdfs.spec.ts:28 was generated by the build [site] - passed
pdfs.spec.ts:34 is served as a real PDF with a sensible page count [site] - passed
pdfs.spec.ts:48 was printed from its own version, not another one [site] - passed
pdfs.spec.ts:62 steve-johnson-resume-qa.pdf is a copy of steve-johnson-resume-lane-qa.pdf [site] - passed
pdfs.spec.ts:62 steve-johnson-resume-consulting.pdf is a copy of steve-johnson-resume-lane-con.pdf [site] - passed
pdfs.spec.ts:62 steve-johnson-resume-adoption.pdf is a copy of steve-johnson-resume-lane-adp.pdf [site]
| passed 24 passed |
| #318 Lane resumes show the right bullets in two pages or fewer | Tested | 51 tests in 1 file- passed
lane-resumes.spec.ts:148 the fit pages used to measure lanes are not part of the site [site] - passed
lane-resumes.spec.ts:155 the old Consulting and Adoption addresses forward to the lane resumes that replaced them [site] - passed
lane-resumes.spec.ts:44 every lane has a saved fit that is on two pages or fewer [site] - passed
lane-resumes.spec.ts:57 the print route shows exactly the fitted bullets, by role newest first, in tier and position order [site] - passed
lane-resumes.spec.ts:73 shows every tier 1 bullet for the lane, on its own or inside a combined bullet [site] - passed
lane-resumes.spec.ts:86 keeps the role floors, and shows only bullets tagged for the lane [site] - passed
lane-resumes.spec.ts:98 carries the lane summary, its skills, real organization names, and the education list [site] - passed
lane-resumes.spec.ts:109 has a PDF of two pages or fewer, printed from this lane [site] - passed
lane-resumes.spec.ts:119 with print media on, the content ends before the end of page 2 [site] - passed
lane-resumes.spec.ts:127 the print route is kept out of search and out of the sitemap, and is not linked [site] - passed
lane-resumes.spec.ts:136 the web page is a real page of the site: searchable, in the sitemap, with a version switcher entry and its PDF [site] - passed
lane-resumes.spec.ts:57 the print route shows exactly the fitted bullets, by role newest first, in tier and position order [site] - passed
lane-resumes.spec.ts:73 shows every tier 1 bullet for the lane, on its own or inside a combined bullet [site] - passed
lane-resumes.spec.ts:86 keeps the role floors, and shows only bullets tagged for the lane [site] - passed
lane-resumes.spec.ts:98 carries the lane summary, its skills, real organization names, and the education list [site] - passed
lane-resumes.spec.ts:109 has a PDF of two pages or fewer, printed from this lane [site] - passed
lane-resumes.spec.ts:119 with print media on, the content ends before the end of page 2 [site] - passed
lane-resumes.spec.ts:127 the print route is kept out of search and out of the sitemap, and is not linked [site] - passed
lane-resumes.spec.ts:136 the web page is a real page of the site: searchable, in the sitemap, with a version switcher entry and its PDF [site] - passed
lane-resumes.spec.ts:57 the print route shows exactly the fitted bullets, by role newest first, in tier and position order [site] - passed
lane-resumes.spec.ts:73 shows every tier 1 bullet for the lane, on its own or inside a combined bullet [site] - passed
lane-resumes.spec.ts:86 keeps the role floors, and shows only bullets tagged for the lane [site] - passed
lane-resumes.spec.ts:98 carries the lane summary, its skills, real organization names, and the education list [site] - passed
lane-resumes.spec.ts:109 has a PDF of two pages or fewer, printed from this lane [site] - passed
lane-resumes.spec.ts:119 with print media on, the content ends before the end of page 2 [site] - passed
lane-resumes.spec.ts:127 the print route is kept out of search and out of the sitemap, and is not linked [site] - passed
lane-resumes.spec.ts:136 the web page is a real page of the site: searchable, in the sitemap, with a version switcher entry and its PDF [site] - passed
lane-resumes.spec.ts:57 the print route shows exactly the fitted bullets, by role newest first, in tier and position order [site] - passed
lane-resumes.spec.ts:73 shows every tier 1 bullet for the lane, on its own or inside a combined bullet [site] - passed
lane-resumes.spec.ts:86 keeps the role floors, and shows only bullets tagged for the lane [site] - passed
lane-resumes.spec.ts:98 carries the lane summary, its skills, real organization names, and the education list [site] - passed
lane-resumes.spec.ts:109 has a PDF of two pages or fewer, printed from this lane [site] - passed
lane-resumes.spec.ts:119 with print media on, the content ends before the end of page 2 [site] - passed
lane-resumes.spec.ts:127 the print route is kept out of search and out of the sitemap, and is not linked [site] - passed
lane-resumes.spec.ts:136 the web page is a real page of the site: searchable, in the sitemap, with a version switcher entry and its PDF [site] - passed
lane-resumes.spec.ts:57 the print route shows exactly the fitted bullets, by role newest first, in tier and position order [site] - passed
lane-resumes.spec.ts:73 shows every tier 1 bullet for the lane, on its own or inside a combined bullet [site] - passed
lane-resumes.spec.ts:86 keeps the role floors, and shows only bullets tagged for the lane [site] - passed
lane-resumes.spec.ts:98 carries the lane summary, its skills, real organization names, and the education list [site] - passed
lane-resumes.spec.ts:109 has a PDF of two pages or fewer, printed from this lane [site] - passed
lane-resumes.spec.ts:119 with print media on, the content ends before the end of page 2 [site] - passed
lane-resumes.spec.ts:127 the print route is kept out of search and out of the sitemap, and is not linked [site] - passed
lane-resumes.spec.ts:136 the web page is a real page of the site: searchable, in the sitemap, with a version switcher entry and its PDF [site] - passed
lane-resumes.spec.ts:57 the print route shows exactly the fitted bullets, by role newest first, in tier and position order [site] - passed
lane-resumes.spec.ts:73 shows every tier 1 bullet for the lane, on its own or inside a combined bullet [site] - passed
lane-resumes.spec.ts:86 keeps the role floors, and shows only bullets tagged for the lane [site] - passed
lane-resumes.spec.ts:98 carries the lane summary, its skills, real organization names, and the education list [site] - passed
lane-resumes.spec.ts:109 has a PDF of two pages or fewer, printed from this lane [site] - passed
lane-resumes.spec.ts:119 with print media on, the content ends before the end of page 2 [site] - passed
lane-resumes.spec.ts:127 the print route is kept out of search and out of the sitemap, and is not linked [site] - passed
lane-resumes.spec.ts:136 the web page is a real page of the site: searchable, in the sitemap, with a version switcher entry and its PDF [site]
| passed 51 passed |
| #319 The lane fit plan never cuts tier 1 | Tested | 24 tests in 1 file- passed
lane-fit.spec.ts:60 keeps public bullets tagged for the lane, tier first and then position, inside each role [site] - passed
lane-fit.spec.ts:66 leaves out bullets that are not public, not tagged for the lane, or tagged only for another lane [site] - passed
lane-fit.spec.ts:78 breaks position ties by the order the bullets are written in the file [site] - passed
lane-fit.spec.ts:85 cuts tier 3 before tier 2, least relevant role first, and the lowest position first inside a role [site] - passed
lane-fit.spec.ts:95 never cuts tier 1: with no floors only the tier 1 bullets are left [site] - passed
lane-fit.spec.ts:101 equal ranks fall back to print order, so the older role gives up bullets first [site] - passed
lane-fit.spec.ts:107 a role with no rank for the lane is treated as the least relevant [site] - passed
lane-fit.spec.ts:112 a role floor stops the cuts in that role and the rest carry on [site] - passed
lane-fit.spec.ts:121 a floor larger than the tier 1 count keeps lower tiers too, and tier 1 still never goes [site] - passed
lane-fit.spec.ts:127 the same input always gives the same plan [site] - passed
lane-fit.spec.ts:143 swaps come first, and the combined bullet takes the best tier and position of the bullets it replaces [site] - passed
lane-fit.spec.ts:154 the biggest saving is swapped first [site] - passed
lane-fit.spec.ts:163 a combined bullet takes the best tier of its parts when it is cut, and one with a tier 1 part is never cut [site] - passed
lane-fit.spec.ts:172 ignores a combined bullet that is not for the lane, replaces a bullet the lane does not use, or is not shorter [site] - passed
lane-fit.spec.ts:185 a bullet is only swapped out once, and a swap that would take a role below its floor is skipped [site] - passed
lane-fit.spec.ts:194 state 0 is the starting list, each state only removes content, and the last k is checked [site] - passed
lane-fit.spec.ts:208 the fingerprint is stable, and changes with wording, order, tags, and the extra detail [site] - passed
lane-fit.spec.ts:237 QA: the plan keeps every tier 1 bullet in every state and respects the floors [site] - passed
lane-fit.spec.ts:237 SDET: the plan keeps every tier 1 bullet in every state and respects the floors [site] - passed
lane-fit.spec.ts:237 CON: the plan keeps every tier 1 bullet in every state and respects the floors [site] - passed
lane-fit.spec.ts:237 ADP: the plan keeps every tier 1 bullet in every state and respects the floors [site] - passed
lane-fit.spec.ts:237 PMBA: the plan keeps every tier 1 bullet in every state and respects the floors [site] - passed
lane-fit.spec.ts:237 IT: the plan keeps every tier 1 bullet in every state and respects the floors [site] - passed
lane-fit.spec.ts:258 every lane has something to cut [site]
| passed 24 passed |
| #320 Lane data is validated | Tested | 22 tests in 1 file- passed
lane-data.spec.ts:43 the real data files pass [site] - passed
lane-data.spec.ts:54 accepts a sound set, and accepts data with no lane tags and no ranks at all [site] - passed
lane-data.spec.ts:63 accepts a combo that replaces a single bullet (a shorter wording of it) [site] - passed
lane-data.spec.ts:95 rejects a lane id listed twice [site] - passed
lane-data.spec.ts:95 rejects a lane code listed twice [site] - passed
lane-data.spec.ts:95 rejects a lane floor for a role that does not exist [site] - passed
lane-data.spec.ts:95 rejects a bullet tagged for an unknown lane [site] - passed
lane-data.spec.ts:95 rejects a role ranking an unknown lane [site] - passed
lane-data.spec.ts:95 rejects a role missing a rank once others have ranks [site] - passed
lane-data.spec.ts:95 rejects a role with no ranks at all once others have ranks [site] - passed
lane-data.spec.ts:95 rejects a combo that replaces a bullet that does not exist [site] - passed
lane-data.spec.ts:95 rejects a combo that replaces no bullets [site] - passed
lane-data.spec.ts:95 rejects a combo that lists a bullet twice [site] - passed
lane-data.spec.ts:95 rejects a combo that mixes roles [site] - passed
lane-data.spec.ts:95 rejects a combo that replaces a bullet that is not public [site] - passed
lane-data.spec.ts:95 rejects a combo used in a lane where a replaced bullet is not tagged [site] - passed
lane-data.spec.ts:95 rejects a combo with an unknown lane [site] - passed
lane-data.spec.ts:95 rejects a combo with no lanes [site] - passed
lane-data.spec.ts:95 rejects a combo with an unknown role [site] - passed
lane-data.spec.ts:95 rejects a combo with the same id as a bullet [site] - passed
lane-data.spec.ts:95 rejects a combo listed twice [site] - passed
lane-data.spec.ts:95 rejects two combos replacing the same bullet in one lane [site]
| passed 22 passed |
| #321 The bank importer is safe and repeatable | Tested | 31 tests in 1 file- passed
import-lanes.spec.ts:42 check mode reports and writes nothing [site] - passed
import-lanes.spec.ts:54 --write sets lanes, role ranks, and combos, and leaves everything else alone [site] - passed
import-lanes.spec.ts:91 a second --write changes nothing [site] - passed
import-lanes.spec.ts:101 keeps Windows line endings [site] - passed
import-lanes.spec.ts:112 a later run drops lanes the bank no longer lists, and removes the line when the list is emptied [site] - passed
import-lanes.spec.ts:162 exits 1 and writes nothing for an id that is not in bullets.yaml [site] - passed
import-lanes.spec.ts:162 exits 1 and writes nothing for a lane code that does not exist [site] - passed
import-lanes.spec.ts:162 exits 1 and writes nothing for a tier of 4 [site] - passed
import-lanes.spec.ts:162 exits 1 and writes nothing for a position of 0 [site] - passed
import-lanes.spec.ts:162 exits 1 and writes nothing for a lane listed twice on a bullet [site] - passed
import-lanes.spec.ts:162 exits 1 and writes nothing for a tag that is not a lane tag [site] - passed
import-lanes.spec.ts:162 exits 1 and writes nothing for a role heading missing a lane rank [site] - passed
import-lanes.spec.ts:162 exits 1 and writes nothing for a role heading with no rank tag at all [site] - passed
import-lanes.spec.ts:162 exits 1 and writes nothing for a role heading with a rank of 0 [site] - passed
import-lanes.spec.ts:162 exits 1 and writes nothing for a role with no heading in the bank [site] - passed
import-lanes.spec.ts:162 exits 1 and writes nothing for a new bullet that is not in bullets.yaml [site] - passed
import-lanes.spec.ts:162 exits 1 and writes nothing for a new bullet that matches two bullets [site] - passed
import-lanes.spec.ts:162 exits 1 and writes nothing for the same bullet tagged twice with different tags [site] - passed
import-lanes.spec.ts:162 exits 1 and writes nothing for a public bullet with no tagged line [site] - passed
import-lanes.spec.ts:162 exits 1 and writes nothing for a combined bullet that replaces a bullet that does not exist [site] - passed
import-lanes.spec.ts:162 exits 1 and writes nothing for a combined bullet that mixes roles [site] - passed
import-lanes.spec.ts:162 exits 1 and writes nothing for a combined bullet used in a lane a replaced bullet is not tagged for [site] - passed
import-lanes.spec.ts:162 exits 1 and writes nothing for a combined bullet with an unknown lane [site] - passed
import-lanes.spec.ts:162 exits 1 and writes nothing for a combined bullet that does not start with a past-tense verb [site] - passed
import-lanes.spec.ts:162 exits 1 and writes nothing for a combined bullet with a double hyphen [site] - passed
import-lanes.spec.ts:162 exits 1 and writes nothing for an unreadable tag [site] - passed
import-lanes.spec.ts:175 a missing bank file explains how to refresh it [site] - passed
import-lanes.spec.ts:183 a bullet under the wrong role heading is only a warning: it still imports by its id [site] - passed
import-lanes.spec.ts:194 check mode lists changed wording, and --write alone leaves it [site] - passed
import-lanes.spec.ts:204 --apply-text copies it, keeps the id, and stays rewrapped as a folded block [site] - passed
import-lanes.spec.ts:213 --apply-text refuses wording that breaks the copy rules, and writes nothing [site]
| passed 31 passed |
| #322 The add-resume-bullet skill enforces the bullet rules | Tested | 17 tests in 1 file- passed
add-resume-bullet-skill.spec.ts:24 accepts a clean bullet [site] - passed
add-resume-bullet-skill.spec.ts:41 rejects a weak verb (Reviewed) [site] - passed
add-resume-bullet-skill.spec.ts:41 rejects a weak verb (Asked) [site] - passed
add-resume-bullet-skill.spec.ts:41 rejects a weak verb (Helped) [site] - passed
add-resume-bullet-skill.spec.ts:41 rejects a weak verb (Worked on) [site] - passed
add-resume-bullet-skill.spec.ts:41 rejects a verb that is not past tense [site] - passed
add-resume-bullet-skill.spec.ts:41 rejects an em dash [site] - passed
add-resume-bullet-skill.spec.ts:41 rejects an en dash [site] - passed
add-resume-bullet-skill.spec.ts:41 rejects a double hyphen [site] - passed
add-resume-bullet-skill.spec.ts:41 rejects a phone number [site] - passed
add-resume-bullet-skill.spec.ts:41 rejects a project count without a plus sign [site] - passed
add-resume-bullet-skill.spec.ts:46 accepts counts written as a floor, and an exact count when told it is final [site] - passed
add-resume-bullet-skill.spec.ts:51 rejects an unknown role or version and a missing version [site] - passed
add-resume-bullet-skill.spec.ts:57 warns, without failing, when the verb is already used in the same role, and suggests others [site] - passed
add-resume-bullet-skill.spec.ts:69 every suggested alternative passes the schema verb check [site] - passed
add-resume-bullet-skill.spec.ts:74 the command line exits 1 on a bad bullet, 0 on a good one, and writes nothing [site] - passed
add-resume-bullet-skill.spec.ts:88 the schema and the skill use the same copy rules file [site]
| passed 17 passed |
| #323 Every link, anchor, and asset resolves | Tested | 1 test in 1 file- passed
links.spec.ts:7 every internal link, anchor, and asset resolves, and no page is orphaned [site]
| passed 1 passed |
| #324 Site navigation works on wide screens and phones | Tested | 37 tests in 1 file- passed
navigation.spec.ts:13 the navigation holds the pages the site is meant to have [site] - passed
navigation.spec.ts:30 shows one row of top-level links and no Menu button, with the pages under Creative tucked away [site] - passed
navigation.spec.ts:39 "Home" opens / and is marked as the current page [site] - passed
navigation.spec.ts:39 "Resume" opens /resume/ and is marked as the current page [site] - passed
navigation.spec.ts:39 "Development & QA" opens /development-qa/ and is marked as the current page [site] - passed
navigation.spec.ts:39 "Communication Board" opens /development-qa/care-communication-board/ and is marked as the current page [site] - passed
navigation.spec.ts:39 "TPD Excel Add-in" opens /development-qa/tpd-excel-addin/ and is marked as the current page [site] - passed
navigation.spec.ts:39 "This site" opens /development-qa/this-site/ and is marked as the current page [site] - passed
navigation.spec.ts:39 "Creative" opens /creative/ and is marked as the current page [site] - passed
navigation.spec.ts:39 "Audio" opens /audio/ and is marked as the current page [site] - passed
navigation.spec.ts:39 "Art" opens /art/ and is marked as the current page [site] - passed
navigation.spec.ts:39 "Jabroni Fest" opens /jabroni-fest/ and is marked as the current page [site] - passed
navigation.spec.ts:39 "Contact" opens /contact/ and is marked as the current page [site] - passed
navigation.spec.ts:51 Resume stays marked on the pages inside it [site] - passed
navigation.spec.ts:68 is closed until the link is hovered, then lists its pages in order [site] - passed
navigation.spec.ts:75 stays open while the pointer moves down from the link onto an item [site] - passed
navigation.spec.ts:86 opens from the keyboard, can be walked through with Tab, and closes with Escape [site] - passed
navigation.spec.ts:99 Escape closes a list opened by the pointer, and it opens again when the pointer returns [site] - passed
navigation.spec.ts:110 is marked as the current section, not the current page, while one of its pages is open [site] - passed
navigation.spec.ts:118 only the list that is hovered is open [site] - passed
navigation.spec.ts:125 has a page of its own that links to every page under it [site] - passed
navigation.spec.ts:68 is closed until the link is hovered, then lists its pages in order [site] - passed
navigation.spec.ts:75 stays open while the pointer moves down from the link onto an item [site] - passed
navigation.spec.ts:86 opens from the keyboard, can be walked through with Tab, and closes with Escape [site] - passed
navigation.spec.ts:99 Escape closes a list opened by the pointer, and it opens again when the pointer returns [site] - passed
navigation.spec.ts:110 is marked as the current section, not the current page, while one of its pages is open [site] - passed
navigation.spec.ts:118 only the list that is hovered is open [site] - passed
navigation.spec.ts:125 has a page of its own that links to every page under it [site] - passed
navigation.spec.ts:141 has one entry per project, in the order the Development & QA page lists them, under their short names [site] - passed
navigation.spec.ts:154 on a project page, Development & QA is the current section and the project is the current page [site] - passed
navigation.spec.ts:171 shows one Menu button instead of the row, on a single line [site] - passed
navigation.spec.ts:181 the menu opens and closes from the keyboard without moving the page [site] - passed
navigation.spec.ts:199 Escape closes the open menu and puts focus back on the Menu button [site] - passed
navigation.spec.ts:219 the open menu lists every page, with the pages under a section listed beneath its link [site] - passed
navigation.spec.ts:232 choosing a page from the menu goes there and marks it current [site] - passed
navigation.spec.ts:419 from the resume it returns to the page the visitor came from, not through the redirect again [site] - passed
navigation.spec.ts:429 changing filters does not add history entries, so Back leaves the archive [site]
| passed 37 passed |
| #325 The Home page introduces and routes visitors | Tested | 6 tests in 1 file- passed
navigation.spec.ts:244 shows the portrait with its alt text and the picture really loads, or the placeholder [site] - passed
navigation.spec.ts:259 offers "View my resume" and "Get in touch", pointing to the Resume and Contact pages [site] - passed
navigation.spec.ts:269 the cards appear in the order set in src/data/home-cards.yaml, with their words [site] - passed
navigation.spec.ts:278 "Development & QA" links to /development-qa/ [site] - passed
navigation.spec.ts:278 "Audio" links to /audio/ [site] - passed
navigation.spec.ts:278 "Art" links to /art/ [site]
| passed 6 passed |
| #326 The Creative page lists the pages under it | Tested | 3 tests in 1 file- passed
navigation.spec.ts:334 shows its lead and paragraphs from src/data/intros.yaml, in order [site] - passed
navigation.spec.ts:342 has one card for each page under Creative, in the navigation order, with the words from the file [site] - passed
navigation.spec.ts:355 a card opens its page [site]
| passed 3 passed |
| #327 Renamed sections keep working | Tested | 6 tests in 1 file- passed
navigation.spec.ts:363 the page is called Jabroni Fest in its heading and title [site] - passed
navigation.spec.ts:370 the old /events/ address forwards to the new page and is kept out of search [site] - passed
navigation.spec.ts:379 no navigation link is still called Events [site] - passed
navigation.spec.ts:386 the page, the header, and a project page all use the new name [site] - passed
navigation.spec.ts:397 the Home card is called Development & QA and opens the new page [site] - passed
navigation.spec.ts:404 the old /development/ address and every old project address forward to the new one and stay out of search [site]
| passed 6 passed |
| #328 Page text and titles come from the data files | Tested | 20 tests in 2 files- passed
copy.spec.ts:22 home: the title and description match [site] - passed
copy.spec.ts:22 art: the title and description match [site] - passed
copy.spec.ts:22 audio: the title and description match [site] - passed
copy.spec.ts:22 contact: the title and description match [site] - passed
copy.spec.ts:22 creative: the title and description match [site] - passed
copy.spec.ts:22 jabroni-fest: the title and description match [site] - passed
copy.spec.ts:22 development-qa: the title and description match [site] - passed
copy.spec.ts:22 not-found: the title and description match [site] - passed
copy.spec.ts:34 the Creative, Jabroni Fest, and Development & QA leads come from the file [site] - passed
copy.spec.ts:43 the Audio page links down to the studio rates, in the words from the file [site] - passed
copy.spec.ts:52 the Contact page ends with its closing line and a working link to the resume [site] - passed
copy.spec.ts:67 fill puts the name and area from site.ts into {name} and {area} [site] - passed
copy.spec.ts:73 linkParts splits [words](/path) links from plain text [site] - passed
copy.spec.ts:122 audio: no match shows the message from the file [site] - passed
copy.spec.ts:122 development-qa: no match shows the message from the file [site] - passed
navigation.spec.ts:294 the Home page shows the tagline and paragraphs from the file, in order [site] - passed
navigation.spec.ts:301 the Art page shows the lead and the statement from the file, in order [site] - passed
navigation.spec.ts:308 the Audio page shows its lead from the file [site] - passed
navigation.spec.ts:313 the Contact page shows its email note and lead, with the area filled in from site.ts [site] - passed
navigation.spec.ts:320 the 404 page shows its heading, lead, button, and list heading from the file [site]
| passed 20 passed |
| #329 Archive filters work on Development & QA and Audio | Tested | 20 tests in 1 file- passed
filters.spec.ts:226 Development & QA filters by tag only, and each card still shows its year and type [site] - passed
filters.spec.ts:77 the data has enough variety to test [site] - passed
filters.spec.ts:81 with scripts off, the form is hidden and every item is listed [site] - passed
filters.spec.ts:90 with scripts on, the Filters panel starts closed and opens with a click to show the form [site] - passed
filters.spec.ts:107 the closed panel says how many filters are in use, even after a reload or a shared link [site] - passed
filters.spec.ts:140 picking tags requires every tag, and an empty result says so [site] - passed
filters.spec.ts:163 Clear filters restores the full list and the plain URL [site] - skipped
filters.spec.ts:180 a value in the link that the drop-downs do not offer is ignored, and each shows its first option [site] - passed
filters.spec.ts:193 the selection lives in the URL and survives a reload [site] - passed
filters.spec.ts:77 the data has enough variety to test [site] - passed
filters.spec.ts:81 with scripts off, the form is hidden and every item is listed [site] - passed
filters.spec.ts:90 with scripts on, the Filters panel starts closed and opens with a click to show the form [site] - passed
filters.spec.ts:107 the closed panel says how many filters are in use, even after a reload or a shared link [site] - passed
filters.spec.ts:127 each year value shows exactly the matching items [site] - passed
filters.spec.ts:127 each band value shows exactly the matching items [site] - passed
filters.spec.ts:127 each role value shows exactly the matching items [site] - passed
filters.spec.ts:140 picking tags requires every tag, and an empty result says so [site] - passed
filters.spec.ts:163 Clear filters restores the full list and the plain URL [site] - passed
filters.spec.ts:180 a value in the link that the drop-downs do not offer is ignored, and each shows its first option [site] - passed
filters.spec.ts:193 the selection lives in the URL and survives a reload [site]
| passed 19 passed, 1 skipped |
| #330 Development & QA project pages show their project file | Tested | 16 tests in 1 file- passed
projects.spec.ts:12 there are projects to check, and with and without a demo link [site] - passed
projects.spec.ts:23 has its own title and description [site] - passed
projects.spec.ts:29 shows the heading, the year and type, the summary, and a way back [site] - passed
projects.spec.ts:37 shows its headline facts, or none [site] - passed
projects.spec.ts:49 shows the problem, what was built, the stack, and the outcome [site] - passed
projects.spec.ts:69 links to the code and the demo it has, and shows no button for one it lacks [site] - passed
projects.spec.ts:23 has its own title and description [site] - passed
projects.spec.ts:29 shows the heading, the year and type, the summary, and a way back [site] - passed
projects.spec.ts:37 shows its headline facts, or none [site] - passed
projects.spec.ts:49 shows the problem, what was built, the stack, and the outcome [site] - passed
projects.spec.ts:69 links to the code and the demo it has, and shows no button for one it lacks [site] - passed
projects.spec.ts:23 has its own title and description [site] - passed
projects.spec.ts:29 shows the heading, the year and type, the summary, and a way back [site] - passed
projects.spec.ts:37 shows its headline facts, or none [site] - passed
projects.spec.ts:49 shows the problem, what was built, the stack, and the outcome [site] - passed
projects.spec.ts:69 links to the code and the demo it has, and shows no button for one it lacks [site]
| passed 16 passed |
| #331 The Art gallery shows every piece correctly | Tested | 41 tests in 1 file- passed
art.spec.ts:9 shows every piece, and every image has real alt text [site] - passed
art.spec.ts:20 pieces keep their own aspect ratio (no stretched or cropped images) [site] - passed
art.spec.ts:32 a piece with no story or extra images has no expand control [site] - passed
art.spec.ts:41 bands, venues, and tags on a piece are lowercase-kebab-case and none is repeated [site] - passed
art.spec.ts:50 the control says Read more, never "the story behind" [site] - passed
art.spec.ts:61 each Signals Midwest and Friends with Jennafits flier is its own piece in the gallery [site] - passed
art.spec.ts:84 the first piece on the page shows its date and keeps its extra images under Read more [site] - passed
art.spec.ts:106 the gallery runs newest first by date, from the first piece to the last [site] - passed
art.spec.ts:129 every date is in the same year as the piece, so the order can be trusted [site] - passed
art.spec.ts:136 under an image there is only the title, date, and format; every caption is under Read more [site] - passed
art.spec.ts:152 with a single group there is no group heading, but the gallery is still a named region [site] - passed
art.spec.ts:159 a piece with a story opens and closes from the keyboard [site] - passed
art.spec.ts:176 a series reveals its extra images inside the control [site] - passed
art.spec.ts:316 titles fit in two lines, and the date and Read more sit at the same height in every tile (320px) [site] - passed
art.spec.ts:316 titles fit in two lines, and the date and Read more sit at the same height in every tile (375px) [site] - passed
art.spec.ts:316 titles fit in two lines, and the date and Read more sit at the same height in every tile (430px) [site] - passed
art.spec.ts:316 titles fit in two lines, and the date and Read more sit at the same height in every tile (500px) [site] - passed
art.spec.ts:316 titles fit in two lines, and the date and Read more sit at the same height in every tile (620px) [site] - passed
art.spec.ts:316 titles fit in two lines, and the date and Read more sit at the same height in every tile (768px) [site] - passed
art.spec.ts:316 titles fit in two lines, and the date and Read more sit at the same height in every tile (1100px) [site] - passed
art.spec.ts:316 titles fit in two lines, and the date and Read more sit at the same height in every tile (1600px) [site] - passed
art.spec.ts:364 every flyer sits whole in the same frame (phone, small) [site] - passed
art.spec.ts:382 cards in the same row end at the same place (phone, small) [site] - passed
art.spec.ts:364 every flyer sits whole in the same frame (phone) [site] - passed
art.spec.ts:382 cards in the same row end at the same place (phone) [site] - passed
art.spec.ts:364 every flyer sits whole in the same frame (large phone) [site] - passed
art.spec.ts:382 cards in the same row end at the same place (large phone) [site] - passed
art.spec.ts:364 every flyer sits whole in the same frame (two columns) [site] - passed
art.spec.ts:382 cards in the same row end at the same place (two columns) [site] - passed
art.spec.ts:364 every flyer sits whole in the same frame (two columns, wide) [site] - passed
art.spec.ts:382 cards in the same row end at the same place (two columns, wide) [site] - passed
art.spec.ts:364 every flyer sits whole in the same frame (tablet) [site] - passed
art.spec.ts:382 cards in the same row end at the same place (tablet) [site] - passed
art.spec.ts:364 every flyer sits whole in the same frame (tablet, wide) [site] - passed
art.spec.ts:382 cards in the same row end at the same place (tablet, wide) [site] - passed
art.spec.ts:364 every flyer sits whole in the same frame (laptop) [site] - passed
art.spec.ts:382 cards in the same row end at the same place (laptop) [site] - passed
art.spec.ts:364 every flyer sits whole in the same frame (desktop) [site] - passed
art.spec.ts:382 cards in the same row end at the same place (desktop) [site] - passed
art.spec.ts:402 rows still line up when the text is wider, whatever the font [site] - passed
art.spec.ts:424 opening Read more still grows only that card [site]
| passed 41 passed |
| #332 Art images open in a larger view | Tested | 7 tests in 1 file- passed
art.spec.ts:203 every image is a link to a larger version, which is served as an image [site] - passed
art.spec.ts:220 nothing is added to the page until an image is clicked [site] - passed
art.spec.ts:225 clicking an image fills the page with a larger version, and the X closes it [site] - passed
art.spec.ts:255 Escape and a click on the dark area close it too [site] - passed
art.spec.ts:274 opens from the keyboard, and shows the right picture for each image [site] - passed
art.spec.ts:288 the extra images in a series open full page too [site] - passed
art.spec.ts:302 with scripts off, an image is a plain link to the larger version [site]
| passed 7 passed |
| #333 Art sort and filters work | Tested | 17 tests in 1 file- passed
art-filters.spec.ts:88 the data has enough variety to test [site] - passed
art-filters.spec.ts:94 values in the link that the drop-downs do not offer are ignored, and each shows its first option [site] - passed
art-filters.spec.ts:105 with scripts off, the panel is hidden and every piece is listed [site] - passed
art-filters.spec.ts:114 the Filters panel starts closed and offers Sort by, Year, and Format [site] - passed
art-filters.spec.ts:130 Oldest first is exactly the newest first list turned around, and Clear puts it back [site] - passed
art-filters.spec.ts:152 the sort order survives a reload and a shared link [site] - passed
art-filters.spec.ts:166 each year shows exactly that year's pieces, still newest first [site] - passed
art-filters.spec.ts:177 each format shows exactly the pieces of that shape [site] - passed
art-filters.spec.ts:187 year, format, and sort work together, and a link restores them [site] - passed
art-filters.spec.ts:208 a combination with no pieces shows the message from the file [site] - passed
art-filters.spec.ts:222 bands, venues, and tags show together as one Tags group with proper labels [site] - passed
art-filters.spec.ts:239 a piece shows when it has any of the picked names, whichever list they are in [site] - passed
art-filters.spec.ts:274 cards in a row still end at the same place after filtering and sorting (375px) [site] - passed
art-filters.spec.ts:274 cards in a row still end at the same place after filtering and sorting (700px) [site] - passed
art-filters.spec.ts:274 cards in a row still end at the same place after filtering and sorting (1100px) [site] - passed
art-filters.spec.ts:274 cards in a row still end at the same place after filtering and sorting (1600px) [site] - passed
art-filters.spec.ts:305 the larger view still opens the right picture after the pieces are re-sorted [site]
| passed 17 passed |
| #334 Audio releases play in Bandcamp players that behave | Tested | 14 tests in 1 file- passed
audio.spec.ts:21 every release has a light and a dark Bandcamp player, and no button or Bandcamp link around them [site] - passed
audio.spec.ts:39 players are marked lazy, so the browser loads them as the visitor scrolls [site] - passed
audio.spec.ts:84 with scripts off, each release still shows one player for the system theme [site] - passed
audio.spec.ts:162 each card shows its release type, and there is no Kind dropdown [site] - passed
audio.spec.ts:172 the Band dropdown lists every band alphabetically, and a split shows under each of its bands [site] - passed
audio.spec.ts:195 the genre group is titled just Genre [site] - passed
audio.spec.ts:200 the studio story is shown near the top, above the releases [site] - passed
audio.spec.ts:209 the studio rates section is linked from the top and reachable [site] - passed
audio.spec.ts:48 only the light players show, and the dark ones are never requested [site] - passed
audio.spec.ts:64 only the dark players show, and the light ones are never requested [site] - passed
audio.spec.ts:73 the theme button switches the players, and the choice holds [site] - passed
audio.spec.ts:107 clicking into a second player resets the first, and leaves a player nobody touched alone [site] - passed
audio.spec.ts:126 clicking in the same player again does not reset it [site] - passed
audio.spec.ts:139 switching theme after using a player removes the hidden copy, so it cannot keep playing [site]
| passed 14 passed |
| #335 Audio cards, filters, and studio rates show their data | Tested | 5 tests in 2 files- passed
audio.spec.ts:232 there are releases with a role line to check [site] - passed
audio.spec.ts:237 each card shows its artist, year, type, my role, and genre chips [site] - passed
audio.spec.ts:253 shows every rate, what is included, and how to prepare, in order [site] - passed
filters.spec.ts:47 bandSlug makes a short, space-free value [site] - passed
filters.spec.ts:56 bandsOf lists the bands of a split, or just the artist [site]
| passed 5 passed |
| #336 The Jabroni Fest page shows events.yaml | Tested | 5 tests in 1 file- passed
jabroni-fest.spec.ts:11 there is at least one organization to check [site] - passed
jabroni-fest.spec.ts:18 shows the name, summary, and role [site] - passed
jabroni-fest.spec.ts:27 shows every fact with its label [site] - passed
jabroni-fest.spec.ts:37 lists every point under "How it runs", in order [site] - passed
jabroni-fest.spec.ts:46 names the cause and says what it is [site]
| passed 5 passed |
| #337 Contact details are right everywhere | Tested | 16 tests in 1 file- passed
contact.spec.ts:15 site.ts still holds the details the pages are meant to show [site] - passed
contact.spec.ts:25 the Contact page offers the email, LinkedIn, and GitHub [site] - passed
contact.spec.ts:39 the resume "qa" header shows the pronouns, area, email, LinkedIn, and GitHub [site] - passed
contact.spec.ts:39 the print route "lane-qa" header shows the pronouns, area, email, LinkedIn, and GitHub [site] - passed
contact.spec.ts:39 the resume "sdet" header shows the pronouns, area, email, LinkedIn, and GitHub [site] - passed
contact.spec.ts:39 the print route "lane-sdet" header shows the pronouns, area, email, LinkedIn, and GitHub [site] - passed
contact.spec.ts:39 the resume "con" header shows the pronouns, area, email, LinkedIn, and GitHub [site] - passed
contact.spec.ts:39 the print route "lane-con" header shows the pronouns, area, email, LinkedIn, and GitHub [site] - passed
contact.spec.ts:39 the resume "adp" header shows the pronouns, area, email, LinkedIn, and GitHub [site] - passed
contact.spec.ts:39 the print route "lane-adp" header shows the pronouns, area, email, LinkedIn, and GitHub [site] - passed
contact.spec.ts:39 the resume "pmba" header shows the pronouns, area, email, LinkedIn, and GitHub [site] - passed
contact.spec.ts:39 the print route "lane-pmba" header shows the pronouns, area, email, LinkedIn, and GitHub [site] - passed
contact.spec.ts:39 the resume "it" header shows the pronouns, area, email, LinkedIn, and GitHub [site] - passed
contact.spec.ts:39 the print route "lane-it" header shows the pronouns, area, email, LinkedIn, and GitHub [site] - passed
contact.spec.ts:39 the resume "creative" header shows the pronouns, area, email, LinkedIn, and GitHub [site] - passed
contact.spec.ts:39 the print route "creative" header shows the pronouns, area, email, LinkedIn, and GitHub [site]
| passed 16 passed |
| #338 Public pages follow the privacy rules | Tested | 4 tests in 1 file- passed
contact.spec.ts:54 the resumes say "Decatur, GA", page text says "Decatur, GA, a suburb of Atlanta", and nothing is more specific [site] - passed
contact.spec.ts:73 there are pages to scan [site] - passed
contact.spec.ts:79 no built page contains a phone number or a tel: link [site] - passed
contact.spec.ts:94 the phone number pattern recognises the usual layouts [site]
| passed 4 passed |
| #339 Site copy uses single hyphens only | Tested | 2 tests in 1 file- passed
copy.spec.ts:92 there are pages to scan [site] - passed
copy.spec.ts:97 no built page has an em dash, an en dash, or a double hyphen in its text [site]
| passed 2 passed |
| #340 The theme button switches light and dark | Tested | 12 tests in 1 file- passed
theme.spec.ts:184 with scripts off there is no button and the page follows the system setting [site] - passed
theme.spec.ts:194 the print pages ignore the choice and stay on white paper [site] - passed
theme.spec.ts:31 starts light and offers dark; one click switches, another switches back [site] - passed
theme.spec.ts:50 the choice is remembered on reload and on other pages [site] - passed
theme.spec.ts:63 works from the keyboard [site] - passed
theme.spec.ts:72 still works when storage is blocked, for the rest of the visit [site] - passed
theme.spec.ts:86 starts dark and offers light; a click switches to light [site] - passed
theme.spec.ts:115 is already in place on load, with no animation [site] - passed
theme.spec.ts:123 is a comfortable target: at least 2rem tall and wide [site] - passed
theme.spec.ts:130 the sun and the moon each keep 3:1 contrast against their sky [site] - passed
theme.spec.ts:147 animates between the themes when motion is allowed [site] - passed
theme.spec.ts:174 changes at once, with nothing animating [site]
| passed 12 passed |
| #341 Every page passes automated accessibility scans | Tested | 99 tests in 1 file- passed
accessibility.spec.ts:40 / [site] - passed
accessibility.spec.ts:40 /art/ [site] - passed
accessibility.spec.ts:40 /audio/ [site] - passed
accessibility.spec.ts:40 /contact/ [site] - passed
accessibility.spec.ts:40 /creative/ [site] - passed
accessibility.spec.ts:40 /development-qa/ [site] - passed
accessibility.spec.ts:40 /development-qa/care-communication-board/ [site] - passed
accessibility.spec.ts:40 /development-qa/this-site/ [site] - passed
accessibility.spec.ts:40 /development-qa/this-site/retrieval/ [site] - passed
accessibility.spec.ts:40 /development-qa/this-site/traceability/ [site] - passed
accessibility.spec.ts:40 /development-qa/tpd-excel-addin/ [site] - passed
accessibility.spec.ts:40 /jabroni-fest/ [site] - passed
accessibility.spec.ts:40 /resume/adp/ [site] - passed
accessibility.spec.ts:40 /resume/con/ [site] - passed
accessibility.spec.ts:40 /resume/creative/ [site] - passed
accessibility.spec.ts:40 /resume/it/ [site] - passed
accessibility.spec.ts:40 /resume/pmba/ [site] - passed
accessibility.spec.ts:40 /resume/print/creative/ [site] - passed
accessibility.spec.ts:40 /resume/print/lane-adp/ [site] - passed
accessibility.spec.ts:40 /resume/print/lane-con/ [site] - passed
accessibility.spec.ts:40 /resume/print/lane-it/ [site] - passed
accessibility.spec.ts:40 /resume/print/lane-pmba/ [site] - passed
accessibility.spec.ts:40 /resume/print/lane-qa/ [site] - passed
accessibility.spec.ts:40 /resume/print/lane-sdet/ [site] - passed
accessibility.spec.ts:40 /resume/qa/ [site] - passed
accessibility.spec.ts:40 /resume/sdet/ [site] - passed
accessibility.spec.ts:40 /404.html [site] - passed
accessibility.spec.ts:40 / [site] - passed
accessibility.spec.ts:40 /art/ [site] - passed
accessibility.spec.ts:40 /audio/ [site] - passed
accessibility.spec.ts:40 /contact/ [site] - passed
accessibility.spec.ts:40 /creative/ [site] - passed
accessibility.spec.ts:40 /development-qa/ [site] - passed
accessibility.spec.ts:40 /development-qa/care-communication-board/ [site] - passed
accessibility.spec.ts:40 /development-qa/this-site/ [site] - passed
accessibility.spec.ts:40 /development-qa/this-site/retrieval/ [site] - passed
accessibility.spec.ts:40 /development-qa/this-site/traceability/ [site] - passed
accessibility.spec.ts:40 /development-qa/tpd-excel-addin/ [site] - passed
accessibility.spec.ts:40 /jabroni-fest/ [site] - passed
accessibility.spec.ts:40 /resume/adp/ [site] - passed
accessibility.spec.ts:40 /resume/con/ [site] - passed
accessibility.spec.ts:40 /resume/creative/ [site] - passed
accessibility.spec.ts:40 /resume/it/ [site] - passed
accessibility.spec.ts:40 /resume/pmba/ [site] - passed
accessibility.spec.ts:40 /resume/print/creative/ [site] - passed
accessibility.spec.ts:40 /resume/print/lane-adp/ [site] - passed
accessibility.spec.ts:40 /resume/print/lane-con/ [site] - passed
accessibility.spec.ts:40 /resume/print/lane-it/ [site] - passed
accessibility.spec.ts:40 /resume/print/lane-pmba/ [site] - passed
accessibility.spec.ts:40 /resume/print/lane-qa/ [site] - passed
accessibility.spec.ts:40 /resume/print/lane-sdet/ [site] - passed
accessibility.spec.ts:40 /resume/qa/ [site] - passed
accessibility.spec.ts:40 /resume/sdet/ [site] - passed
accessibility.spec.ts:40 /404.html [site] - passed
accessibility.spec.ts:51 / [site] - passed
accessibility.spec.ts:51 /art/ [site] - passed
accessibility.spec.ts:51 /audio/ [site] - passed
accessibility.spec.ts:51 /contact/ [site] - passed
accessibility.spec.ts:51 /creative/ [site] - passed
accessibility.spec.ts:51 /development-qa/ [site] - passed
accessibility.spec.ts:51 /development-qa/care-communication-board/ [site] - passed
accessibility.spec.ts:51 /development-qa/this-site/ [site] - passed
accessibility.spec.ts:51 /development-qa/this-site/retrieval/ [site] - passed
accessibility.spec.ts:51 /development-qa/this-site/traceability/ [site] - passed
accessibility.spec.ts:51 /development-qa/tpd-excel-addin/ [site] - passed
accessibility.spec.ts:51 /jabroni-fest/ [site] - passed
accessibility.spec.ts:51 /resume/adp/ [site] - passed
accessibility.spec.ts:51 /resume/con/ [site] - passed
accessibility.spec.ts:51 /resume/creative/ [site] - passed
accessibility.spec.ts:51 /resume/it/ [site] - passed
accessibility.spec.ts:51 /resume/pmba/ [site] - passed
accessibility.spec.ts:51 /resume/print/creative/ [site] - passed
accessibility.spec.ts:51 /resume/print/lane-adp/ [site] - passed
accessibility.spec.ts:51 /resume/print/lane-con/ [site] - passed
accessibility.spec.ts:51 /resume/print/lane-it/ [site] - passed
accessibility.spec.ts:51 /resume/print/lane-pmba/ [site] - passed
accessibility.spec.ts:51 /resume/print/lane-qa/ [site] - passed
accessibility.spec.ts:51 /resume/print/lane-sdet/ [site] - passed
accessibility.spec.ts:51 /resume/qa/ [site] - passed
accessibility.spec.ts:51 /resume/sdet/ [site] - passed
accessibility.spec.ts:51 /404.html [site] - passed
accessibility.spec.ts:63 Art with every story and series open [site] - passed
accessibility.spec.ts:69 Development & QA with filters applied [site] - passed
accessibility.spec.ts:76 Art with the filters open, sorted oldest first and narrowed by year [site] - passed
accessibility.spec.ts:84 Audio with a filter applied and the players in place [site] - passed
accessibility.spec.ts:91 after switching the theme with the header button [site] - passed
accessibility.spec.ts:98 Art with the larger view open [site] - passed
accessibility.spec.ts:106 the Creative list in the header, open [site] - passed
accessibility.spec.ts:106 the Development & QA list in the header, open [site] - passed
accessibility.spec.ts:115 the phone menu, open [site] - passed
accessibility.spec.ts:63 Art with every story and series open [site] - passed
accessibility.spec.ts:69 Development & QA with filters applied [site] - passed
accessibility.spec.ts:76 Art with the filters open, sorted oldest first and narrowed by year [site] - passed
accessibility.spec.ts:84 Audio with a filter applied and the players in place [site] - passed
accessibility.spec.ts:91 after switching the theme with the header button [site] - passed
accessibility.spec.ts:98 Art with the larger view open [site] - passed
accessibility.spec.ts:106 the Creative list in the header, open [site] - passed
accessibility.spec.ts:106 the Development & QA list in the header, open [site] - passed
accessibility.spec.ts:115 the phone menu, open [site]
| passed 99 passed |
| #342 The site works from the keyboard | Tested | 3 tests in 1 file- passed
accessibility.spec.ts:126 the skip link is the first stop, is visible when focused, and jumps to the content [site] - passed
accessibility.spec.ts:136 focused links and controls have a visible outline, all the way down the page [site] - passed
accessibility.spec.ts:175 every page has exactly one skip link, and it targets the main landmark [site]
| passed 3 passed |
| #343 The header stays put | Tested | 12 tests in 1 file- passed
header.spec.ts:22 every page has the same link positions as Home [site] - passed
header.spec.ts:31 a short page and a long page line up (the scrollbar space is always kept) [site] - passed
header.spec.ts:50 on every page at 1100px wide [site] - passed
header.spec.ts:50 on every page at 900px wide [site] - passed
header.spec.ts:50 on every page at 768px wide [site] - passed
header.spec.ts:50 on every page at 736px wide [site] - passed
header.spec.ts:50 on every page at 735px wide [site] - passed
header.spec.ts:50 on every page at 600px wide [site] - passed
header.spec.ts:50 on every page at 375px wide [site] - passed
header.spec.ts:93 at 1100px wide [site] - passed
header.spec.ts:93 at 768px wide [site] - passed
header.spec.ts:93 at 375px wide [site]
| passed 12 passed |
| #344 The site uses the bundled font only | Tested | 3 tests in 1 file- passed
fonts.spec.ts:11 / loads the bundled Atkinson font and no outside fonts [site] - passed
fonts.spec.ts:11 /resume/qa/ loads the bundled Atkinson font and no outside fonts [site] - passed
fonts.spec.ts:11 /development-qa/ loads the bundled Atkinson font and no outside fonts [site]
| passed 3 passed |
| #345 Site icons and link previews are present | Tested | 41 tests in 2 files- passed
icons.spec.ts:10 / links the site icons [site] - passed
icons.spec.ts:10 /art/ links the site icons [site] - passed
icons.spec.ts:10 /audio/ links the site icons [site] - passed
icons.spec.ts:10 /contact/ links the site icons [site] - passed
icons.spec.ts:10 /creative/ links the site icons [site] - passed
icons.spec.ts:10 /development-qa/ links the site icons [site] - passed
icons.spec.ts:10 /development-qa/care-communication-board/ links the site icons [site] - passed
icons.spec.ts:10 /development-qa/this-site/ links the site icons [site] - passed
icons.spec.ts:10 /development-qa/this-site/retrieval/ links the site icons [site] - passed
icons.spec.ts:10 /development-qa/this-site/traceability/ links the site icons [site] - passed
icons.spec.ts:10 /development-qa/tpd-excel-addin/ links the site icons [site] - passed
icons.spec.ts:10 /jabroni-fest/ links the site icons [site] - passed
icons.spec.ts:10 /resume/adp/ links the site icons [site] - passed
icons.spec.ts:10 /resume/con/ links the site icons [site] - passed
icons.spec.ts:10 /resume/creative/ links the site icons [site] - passed
icons.spec.ts:10 /resume/it/ links the site icons [site] - passed
icons.spec.ts:10 /resume/pmba/ links the site icons [site] - passed
icons.spec.ts:10 /resume/qa/ links the site icons [site] - passed
icons.spec.ts:10 /resume/sdet/ links the site icons [site] - passed
icons.spec.ts:10 /404.html links the site icons [site] - passed
icons.spec.ts:18 each icon file exists and is the right kind and size [site] - passed
social.spec.ts:15 / has Open Graph tags that match the page [site] - passed
social.spec.ts:15 /art/ has Open Graph tags that match the page [site] - passed
social.spec.ts:15 /audio/ has Open Graph tags that match the page [site] - passed
social.spec.ts:15 /contact/ has Open Graph tags that match the page [site] - passed
social.spec.ts:15 /creative/ has Open Graph tags that match the page [site] - passed
social.spec.ts:15 /development-qa/ has Open Graph tags that match the page [site] - passed
social.spec.ts:15 /development-qa/care-communication-board/ has Open Graph tags that match the page [site] - passed
social.spec.ts:15 /development-qa/this-site/ has Open Graph tags that match the page [site] - passed
social.spec.ts:15 /development-qa/this-site/retrieval/ has Open Graph tags that match the page [site] - passed
social.spec.ts:15 /development-qa/this-site/traceability/ has Open Graph tags that match the page [site] - passed
social.spec.ts:15 /development-qa/tpd-excel-addin/ has Open Graph tags that match the page [site] - passed
social.spec.ts:15 /jabroni-fest/ has Open Graph tags that match the page [site] - passed
social.spec.ts:15 /resume/adp/ has Open Graph tags that match the page [site] - passed
social.spec.ts:15 /resume/con/ has Open Graph tags that match the page [site] - passed
social.spec.ts:15 /resume/creative/ has Open Graph tags that match the page [site] - passed
social.spec.ts:15 /resume/it/ has Open Graph tags that match the page [site] - passed
social.spec.ts:15 /resume/pmba/ has Open Graph tags that match the page [site] - passed
social.spec.ts:15 /resume/qa/ has Open Graph tags that match the page [site] - passed
social.spec.ts:15 /resume/sdet/ has Open Graph tags that match the page [site] - passed
social.spec.ts:39 the preview image exists, is 1200 by 630, and is served as an image [site]
| passed 41 passed |
| #346 The sitemap and robots.txt describe the public site | Tested | 3 tests in 1 file- passed
social.spec.ts:56 robots.txt allows crawling and points to the sitemap [site] - passed
social.spec.ts:66 the sitemap index points to a sitemap that exists [site] - passed
social.spec.ts:72 the sitemap lists every public page and none of the print routes, the 404 page, or the redirects [site]
| passed 3 passed |
| #347 Unknown addresses get a friendly 404 page | Tested | 5 tests in 1 file- passed
not-found.spec.ts:7 an unknown address /this-page-does-not-exist/ shows the friendly page with a 404 status [site] - passed
not-found.spec.ts:7 an unknown address /resume/no-such-version/ shows the friendly page with a 404 status [site] - passed
not-found.spec.ts:7 an unknown address /missing.html shows the friendly page with a 404 status [site] - passed
not-found.spec.ts:16 the friendly page links home and to every main section, and each link works [site] - passed
not-found.spec.ts:28 the page list groups each section's pages beneath it, the way the header does [site]
| passed 5 passed |
| #348 The README matches the project | Tested | 10 tests in 1 file- passed
readme.spec.ts:47 there is enough in the README to check [site] - passed
readme.spec.ts:54 every npm command in the README exists in package.json [site] - passed
readme.spec.ts:59 every npm script in package.json is described in the README [site] - passed
readme.spec.ts:68 the exception list names only scripts that exist [site] - passed
readme.spec.ts:73 every relative link in README.md points to a file that exists [site] - passed
readme.spec.ts:73 every relative link in src/content/art/README.md points to a file that exists [site] - passed
readme.spec.ts:73 every relative link in src/content/releases/README.md points to a file that exists [site] - passed
readme.spec.ts:89 every project file named in the README exists [site] - passed
readme.spec.ts:101 every spec file in tests/ is described in the README or CLAUDE.md [site] - passed
readme.spec.ts:117 the Playwright MCP install command in the docs uses the version pinned in .mcp.json [site]
| passed 10 passed |
| #349 The deployed site passes a smoke test | Tested | 11 tests in 1 file- not run
smoke.spec.ts:9 the home page is served with its title and heading [smoke] - not run
smoke.spec.ts:16 a plain http address is sent on to https [smoke] - not run
smoke.spec.ts:25 every navigation link responds [smoke] - not run
smoke.spec.ts:34 each resume version and its PDF are served [smoke] - not run
smoke.spec.ts:47 the project archive lists the projects and a project page loads [smoke] - not run
smoke.spec.ts:57 the audio page lists the releases, each with one visible Bandcamp player [smoke] - not run
smoke.spec.ts:65 the art page serves its images [smoke] - not run
smoke.spec.ts:76 the contact page offers email, LinkedIn, and GitHub [smoke] - not run
smoke.spec.ts:83 the main pages have no console errors or failed requests [smoke] - not run
smoke.spec.ts:111 the requirements traceability report is published with a row per requirement [smoke] - not run
smoke.spec.ts:119 an unknown address returns a real 404 [smoke]
| not run 11 not run |
| #350 Bank-only content is never published | Tested | 4 tests in 1 file- passed
bank-private.spec.ts:24 there are pages to scan [site] - passed
bank-private.spec.ts:28 no built page shows a private section name from the bank [site] - passed
bank-private.spec.ts:39 no private file is copied into the built site [site] - skipped
bank-private.spec.ts:54 no story title from the local bank snapshot appears on a built page [site]
| passed 3 passed, 1 skipped |
| #351 No confidential employer details are published | Manual (reason given) | Manual. Whether a detail is confidential is a judgment about meaning, not a pattern a test can match. The owner reviews resume and project text for confidential employer details before publishing it (see CLAUDE.md, Working agreements). | n/a |
| #352 Resume bullets start with a past-tense action verb | Tested | 5 tests in 1 file- passed
bullet-verbs.spec.ts:16 the rule accepts past-tense verbs, regular and irregular [site] - passed
bullet-verbs.spec.ts:22 the rule rejects present tense, -ing forms, and non-verbs [site] - passed
bullet-verbs.spec.ts:28 every bullet in the real data starts with a past-tense verb, public or not [site] - passed
bullet-verbs.spec.ts:34 every combined bullet starts with a past-tense verb too [site] - passed
bullet-verbs.spec.ts:40 the content schema applies the rule to bullets and to combined bullets [site]
| passed 5 passed |
| #353 Exploratory testing sessions are recorded | Manual (reason given) | Manual. Exploratory testing is human-driven investigation, so a test would defeat its purpose. It is verified by reading the charter and session notes in docs/exploratory/; checks worth repeating are promoted to automated tests. | n/a |
| #354 Changes reach main only through a pull request with a passing build | Manual (reason given) | Manual. This is enforced by a GitHub repository ruleset on main, which lives in GitHub settings rather than in the code under test. It is verified by reading the ruleset (Settings, Rules); Playwright cannot observe it. | n/a |
| #355 The traceability check catches gaps and bad tags | Tested | 14 tests in 2 files- passed
traceability.spec.ts:38 a requirement with a linked test passes [site] - passed
traceability.spec.ts:45 tags are read with or without the @ sign, and one test can verify several requirements [site] - passed
traceability.spec.ts:51 a requirement with no test fails [site] - passed
traceability.spec.ts:57 no-automated-test with a written reason passes; without one it fails [site] - passed
traceability.spec.ts:67 the reason is read up to the next heading [site] - passed
traceability.spec.ts:72 a test tagged with a number that is not a requirement fails [site] - passed
traceability.spec.ts:79 a test with no requirement tag fails [site] - passed
traceability.spec.ts:84 a retired requirement is left out, and a test still pointing at it fails [site] - passed
traceability.spec.ts:92 a requirement closed as completed still counts, and pull requests are ignored [site] - passed
traceability.spec.ts:100 the last result is the worst result, and tests that did not run say so [site] - passed
traceability.spec.ts:109 linked tests are counted per test, even when titles repeat [site] - passed
traceability.spec.ts:115 the markdown and HTML list every requirement and escape what they print [site] - passed
traceability.spec.ts:129 the command line exits 1 on a gap, 0 on a clean matrix, and writes the report either way [site] - not run
smoke.spec.ts:111 the requirements traceability report is published with a row per requirement [smoke]
| passed 13 passed, 1 not run |
| #362 Project totals from the GitHub API are contract-checked | Tested | 40 tests in 2 files- passed
site-stats-postman.spec.ts:20 the committed collection is exactly what `npm run postman` writes [site] - passed
site-stats-postman.spec.ts:25 it has one request per endpoint the script calls, with the same paths [site] - passed
site-stats-postman.spec.ts:30 every request checks the status and the contract, with the real schema embedded [site] - passed
site-stats-postman.spec.ts:41 it carries no secret: the token is a variable filled in at run time [site] - passed
site-stats.spec.ts:48 every recorded answer matches its schema [site] - passed
site-stats.spec.ts:56 the good answers give the expected totals [site] - passed
site-stats.spec.ts:60 extra fields and a new field order do not matter [site] - passed
site-stats.spec.ts:67 the committed data file matches its schema [site] - passed
site-stats.spec.ts:73 the data file schema rejects a missing field, a wrong type, a negative count, and an extra field [site] - passed
site-stats.spec.ts:90 the page-count helper reads the last page of a Link header [site] - passed
site-stats.spec.ts:96 the test total is read from `playwright test --list`, and 0 is refused [site] - passed
site-stats.spec.ts:104 a missing field names the field [site] - passed
site-stats.spec.ts:110 a release without a tag name is rejected [site] - passed
site-stats.spec.ts:114 a wrong type is rejected [site] - passed
site-stats.spec.ts:122 a negative count is rejected [site] - passed
site-stats.spec.ts:126 an empty commit list is rejected, but an empty release list is a valid zero [site] - passed
site-stats.spec.ts:131 an incomplete search is rejected [site] - passed
site-stats.spec.ts:135 a page that is not JSON is rejected, not crashed on [site] - passed
site-stats.spec.ts:139 more merged pull requests than pull requests is rejected [site] - passed
site-stats.spec.ts:143 an answer about a different repository is rejected [site] - passed
site-stats.spec.ts:147 a rate-limit answer is named as one, with the reset time [site] - passed
site-stats.spec.ts:157 a 404 names the endpoint and the repository check [site] - passed
site-stats.spec.ts:161 a rejected token and a server error are named with their status [site] - passed
site-stats.spec.ts:166 a network failure is a clear error [site] - passed
site-stats.spec.ts:171 the error says nothing was written, and never contains the token [site] - passed
site-stats.spec.ts:179 a run makes six calls, and asking twice reuses the answers [site] - passed
site-stats.spec.ts:189 the token is sent as a bearer header and nowhere else [site] - passed
site-stats.spec.ts:206 without a token no Authorization header is sent [site] - passed
site-stats.spec.ts:214 neither the script nor the library ever logs the token [site] - passed
site-stats.spec.ts:224 a count that drops is refused, naming the field [site] - passed
site-stats.spec.ts:232 equal or higher counts pass, and so does a lower line count [site] - passed
site-stats.spec.ts:240 the committed file has sane numbers [site] - passed
site-stats.spec.ts:278 good answers with --write save a file that matches the schema [site] - passed
site-stats.spec.ts:289 without --write nothing is saved [site] - passed
site-stats.spec.ts:297 a 404 exits 1 with a clear line and leaves the file alone [site] - passed
site-stats.spec.ts:306 a rate limit exits 1 and leaves the file alone [site] - passed
site-stats.spec.ts:315 a missing field, a wrong type, and an empty commit list each exit 1 and leave the file alone [site] - passed
site-stats.spec.ts:331 a count lower than the committed value exits 1 and leaves the file alone [site] - passed
site-stats.spec.ts:340 the token never appears in the output, even on failure [site] - passed
site-stats.spec.ts:348 the writer itself refuses data that breaks the schema [site]
| passed 40 passed |
| #365 The bullet eval scorer checks AI-drafted bullets against the site's copy rules | Tested | 35 tests in 1 file- passed
bullet-eval-scorer.spec.ts:70 a clean bullet passes every rule that applies, for every prompt [site] - passed
bullet-eval-scorer.spec.ts:80 fails single-hyphens on an em dash [site] - passed
bullet-eval-scorer.spec.ts:80 fails single-hyphens on an en dash [site] - passed
bullet-eval-scorer.spec.ts:80 fails single-hyphens on a double hyphen [site] - passed
bullet-eval-scorer.spec.ts:80 fails past-tense-verb on a present-tense opening verb [site] - passed
bullet-eval-scorer.spec.ts:80 fails past-tense-verb on an -ing opening word [site] - passed
bullet-eval-scorer.spec.ts:80 fails past-tense-verb on a non-verb opening [site] - passed
bullet-eval-scorer.spec.ts:80 fails strong-verb on the weak verb Helped [site] - passed
bullet-eval-scorer.spec.ts:80 fails strong-verb on the weak verb Reviewed [site] - passed
bullet-eval-scorer.spec.ts:80 fails strong-verb on the weak verb Worked [site] - passed
bullet-eval-scorer.spec.ts:80 fails bare-one-sentence on two sentences [site] - passed
bullet-eval-scorer.spec.ts:80 fails bare-one-sentence on two lines [site] - passed
bullet-eval-scorer.spec.ts:80 fails bare-one-sentence on a list marker [site] - passed
bullet-eval-scorer.spec.ts:80 fails bare-one-sentence on wrapping quotation marks [site] - passed
bullet-eval-scorer.spec.ts:80 fails bare-one-sentence on a lead-in [site] - passed
bullet-eval-scorer.spec.ts:80 fails count-floor on a project count without a plus sign [site] - passed
bullet-eval-scorer.spec.ts:80 fails no-phone on a phone number [site] - passed
bullet-eval-scorer.spec.ts:80 fails no-invented-numbers on an invented percentage [site] - passed
bullet-eval-scorer.spec.ts:80 fails no-invented-numbers on an invented count [site] - passed
bullet-eval-scorer.spec.ts:80 fails no-leaked-strings on a leaked city [site] - passed
bullet-eval-scorer.spec.ts:80 fails no-leaked-strings on a leaked address [site] - passed
bullet-eval-scorer.spec.ts:80 fails no-copied-example on a verbatim copy of a reference example [site] - passed
bullet-eval-scorer.spec.ts:88 every rule has a bad sample that fails it, so a new rule cannot be added untested [site] - passed
bullet-eval-scorer.spec.ts:92 an empty or whitespace reply fails every rule that applies, instead of passing by default [site] - passed
bullet-eval-scorer.spec.ts:106 a rule that does not apply is reported as n/a, not counted as a pass [site] - passed
bullet-eval-scorer.spec.ts:116 the copy rule applies only when examples were shown, and passes a reworded draft [site] - passed
bullet-eval-scorer.spec.ts:125 numbers are compared as digits, with commas and a plus sign ignored [site] - passed
bullet-eval-scorer.spec.ts:132 rules that cannot be checked in code are listed as manual review items [site] - passed
bullet-eval-scorer.spec.ts:139 the dash, phone, verb, weak-verb, count, and sentence rules come from the shared copy rules file [site] - passed
bullet-eval-scorer.spec.ts:149 isBareOneSentence accepts one sentence and rejects everything else [site] - passed
bullet-eval-scorer.spec.ts:158 notWeakVerb rejects exactly the weak verbs [site] - passed
bullet-eval-scorer.spec.ts:164 unflooredCounts finds exact counts of project things and ignores floors [site] - passed
bullet-eval-scorer.spec.ts:173 there are eight fixed prompts with unique ids, covering every kind of case [site] - passed
bullet-eval-scorer.spec.ts:181 the bait prompts really contain the bait [site] - passed
bullet-eval-scorer.spec.ts:194 only made-up contact details are used [site]
| passed 35 passed |
| #366 The bullet eval fails when the pass rate drops below the recorded threshold | Tested | 13 tests in 1 file- passed
bullet-eval-gate.spec.ts:38 counts passes per rule and per prompt, and leaves out rules that do not apply [site] - passed
bullet-eval-gate.spec.ts:55 lists the worst failures first, with the model output [site] - passed
bullet-eval-gate.spec.ts:70 the decision passes at the threshold and fails just below it [site] - passed
bullet-eval-gate.spec.ts:81 a bad threshold or a result for an unknown prompt is an error, not a silent pass [site] - passed
bullet-eval-gate.spec.ts:87 the run is small and capped [site] - passed
bullet-eval-gate.spec.ts:95 a baseline from a real run is recorded for both modes, and it matches the prompts, system prompt, and model in the repo [site] - passed
bullet-eval-gate.spec.ts:119 replaying good replies passes the gate (exit 0) [site] - passed
bullet-eval-gate.spec.ts:125 replaying known-bad replies fails the gate (exit 1) and shows the actual output [site] - passed
bullet-eval-gate.spec.ts:141 a threshold set one step above the pass rate fails, one step below passes [site] - passed
bullet-eval-gate.spec.ts:148 a run that cannot be done exits 2, not 1, and makes no API call [site] - passed
bullet-eval-gate.spec.ts:161 an API error exits 2 and never prints the key [site] - passed
bullet-eval-gate.spec.ts:174 an error message that echoes the key is scrubbed before it is printed [site] - passed
bullet-eval-gate.spec.ts:200 the live path (retrieval off) works end to end against a local stand-in for the API [site]
| passed 13 passed |
| #367 The AI eval workflow protects the API key and limits cost | Tested | 7 tests in 1 file- passed
ai-eval-workflow.spec.ts:25 runs only on demand, weekly, and on pull requests that touch the prompts, rules, retrieval files, or workflow [site] - passed
ai-eval-workflow.spec.ts:33 never uses pull_request_target, and skips forks and Dependabot [site] - passed
ai-eval-workflow.spec.ts:43 the key comes from the ANTHROPIC_API_KEY secret, and only the eval step can see it [site] - passed
ai-eval-workflow.spec.ts:57 has read-only permissions, a job timeout, and a concurrency group [site] - passed
ai-eval-workflow.spec.ts:67 runs the eval through the npm script and keeps the replies [site] - passed
ai-eval-workflow.spec.ts:75 the npm script exists and the rest of the project does not start the eval [site] - passed
ai-eval-workflow.spec.ts:84 the key is never written to the repository [site]
| passed 7 passed |
| #373 Performance budgets cover the home, resume, and Art pages on five measures | Tested | 6 tests in 1 file- passed
performance.spec.ts:33 exactly three pages are measured, all on the local address [site] - passed
performance.spec.ts:41 / has all five limits, at the approved values [site] - passed
performance.spec.ts:41 /resume/qa/ has all five limits, at the approved values [site] - passed
performance.spec.ts:41 /art/ has all five limits, at the approved values [site] - passed
performance.spec.ts:55 a missed budget is an error (not a warning), judged on the median of three runs [site] - passed
performance.spec.ts:65 results stay on this machine and the page patterns match only their own page [site]
| passed 6 passed |
| #374 The k6 smoke test has error-rate and p95 thresholds and only targets a local server | Tested | 5 tests in 1 file- passed
performance.spec.ts:78 a few virtual users for a short time [site] - passed
performance.spec.ts:87 fails on an error rate of 1% or more or a p95 response time of 100 ms or more [site] - passed
performance.spec.ts:92 requests only the home page, the resume page, and the Art page [site] - passed
performance.spec.ts:96 stops before the first request if BASE_URL is not a local address [site] - passed
performance.spec.ts:106 nothing in the performance files names the live site [site]
| passed 5 passed |
| #375 The performance workflow measures only a local build and only on site changes | Tested | 5 tests in 1 file- passed
performance.spec.ts:124 runs on pull requests that change site code, content, or the performance files, and on demand [site] - passed
performance.spec.ts:134 builds the site, then runs the one script that serves it on 127.0.0.1 and measures it [site] - passed
performance.spec.ts:146 is read-only, has a timeout and a concurrency group, and takes no secrets [site] - passed
performance.spec.ts:154 the only action from outside GitHub is pinned to a full commit, and k6 to an exact version [site] - passed
performance.spec.ts:161 keeps the results, even when the run failed [site]
| passed 5 passed |
| #376 The performance report shows each value next to its budget and names every failure | Tested | 8 tests in 1 file- passed
performance.spec.ts:203 one row per page and metric, with the measured value and the budget side by side [site] - passed
performance.spec.ts:221 uses the median of the runs, so one odd run does not decide [site] - passed
performance.spec.ts:227 a value outside its budget fails, and the message names the page, metric, value, and limit [site] - passed
performance.spec.ts:241 a value exactly on its limit passes [site] - passed
performance.spec.ts:247 a missing result is a failure, never a pass [site] - passed
performance.spec.ts:259 anyFailed is false only when every row passes [site] - passed
performance.spec.ts:264 the Markdown has the table, a verdict, and a line for each failure [site] - passed
performance.spec.ts:277 the real config produces a row for every budgeted page and metric [site]
| passed 8 passed |
| #377 A pull request that breaks a performance budget or k6 threshold fails the check | Manual (reason given) | Manual. This requirement is about the real pages and the real server, measured by Lighthouse and k6 in the performance workflow itself. A Playwright test cannot repeat that measurement reliably: timings depend on the machine, so a copy inside the test suite would be noisy and would only duplicate the check it is meant to guard. The parts that can be tested without a browser (the budget values, the workflow settings, and the report builder, including a failing case) have their own tagged requirements. The gates are proven to fail by the throwaway-branch runs recorded in #370. | n/a |
| #382 Fonts are preloaded and the fallback matches their widths, so the page does not shift | Tested | 29 tests in 1 file- passed
fonts.spec.ts:52 there are pages to check [site] - passed
fonts.spec.ts:57 / preloads the 400, 600, and 700 files, from this site, with crossorigin [site] - passed
fonts.spec.ts:57 /art/ preloads the 400, 600, and 700 files, from this site, with crossorigin [site] - passed
fonts.spec.ts:57 /audio/ preloads the 400, 600, and 700 files, from this site, with crossorigin [site] - passed
fonts.spec.ts:57 /contact/ preloads the 400, 600, and 700 files, from this site, with crossorigin [site] - passed
fonts.spec.ts:57 /creative/ preloads the 400, 600, and 700 files, from this site, with crossorigin [site] - passed
fonts.spec.ts:57 /development-qa/ preloads the 400, 600, and 700 files, from this site, with crossorigin [site] - passed
fonts.spec.ts:57 /development-qa/care-communication-board/ preloads the 400, 600, and 700 files, from this site, with crossorigin [site] - passed
fonts.spec.ts:57 /development-qa/this-site/ preloads the 400, 600, and 700 files, from this site, with crossorigin [site] - passed
fonts.spec.ts:57 /development-qa/this-site/retrieval/ preloads the 400, 600, and 700 files, from this site, with crossorigin [site] - passed
fonts.spec.ts:57 /development-qa/this-site/traceability/ preloads the 400, 600, and 700 files, from this site, with crossorigin [site] - passed
fonts.spec.ts:57 /development-qa/tpd-excel-addin/ preloads the 400, 600, and 700 files, from this site, with crossorigin [site] - passed
fonts.spec.ts:57 /jabroni-fest/ preloads the 400, 600, and 700 files, from this site, with crossorigin [site] - passed
fonts.spec.ts:57 /resume/adp/ preloads the 400, 600, and 700 files, from this site, with crossorigin [site] - passed
fonts.spec.ts:57 /resume/con/ preloads the 400, 600, and 700 files, from this site, with crossorigin [site] - passed
fonts.spec.ts:57 /resume/creative/ preloads the 400, 600, and 700 files, from this site, with crossorigin [site] - passed
fonts.spec.ts:57 /resume/it/ preloads the 400, 600, and 700 files, from this site, with crossorigin [site] - passed
fonts.spec.ts:57 /resume/pmba/ preloads the 400, 600, and 700 files, from this site, with crossorigin [site] - passed
fonts.spec.ts:57 /resume/print/creative/ preloads the 400, 600, and 700 files, from this site, with crossorigin [site] - passed
fonts.spec.ts:57 /resume/print/lane-adp/ preloads the 400, 600, and 700 files, from this site, with crossorigin [site] - passed
fonts.spec.ts:57 /resume/print/lane-con/ preloads the 400, 600, and 700 files, from this site, with crossorigin [site] - passed
fonts.spec.ts:57 /resume/print/lane-it/ preloads the 400, 600, and 700 files, from this site, with crossorigin [site] - passed
fonts.spec.ts:57 /resume/print/lane-pmba/ preloads the 400, 600, and 700 files, from this site, with crossorigin [site] - passed
fonts.spec.ts:57 /resume/print/lane-qa/ preloads the 400, 600, and 700 files, from this site, with crossorigin [site] - passed
fonts.spec.ts:57 /resume/print/lane-sdet/ preloads the 400, 600, and 700 files, from this site, with crossorigin [site] - passed
fonts.spec.ts:57 /resume/qa/ preloads the 400, 600, and 700 files, from this site, with crossorigin [site] - passed
fonts.spec.ts:57 /resume/sdet/ preloads the 400, 600, and 700 files, from this site, with crossorigin [site] - passed
fonts.spec.ts:76 the fallback is Arial (or Liberation Sans, its Linux stand-in), not system-ui, so the swap barely moves anything [site] - passed
fonts.spec.ts:89 each preload is the same file the stylesheet uses, so nothing is fetched twice [site]
| passed 29 passed |
| #393 The resume PDFs use the house layout and keep readable type | Tested | 7 tests in 1 file- passed
resume-details.spec.ts:54 the print route of "qa" has the right-aligned header, plain headings, run-in skills, and readable type [site] - passed
resume-details.spec.ts:54 the print route of "sdet" has the right-aligned header, plain headings, run-in skills, and readable type [site] - passed
resume-details.spec.ts:54 the print route of "con" has the right-aligned header, plain headings, run-in skills, and readable type [site] - passed
resume-details.spec.ts:54 the print route of "adp" has the right-aligned header, plain headings, run-in skills, and readable type [site] - passed
resume-details.spec.ts:54 the print route of "pmba" has the right-aligned header, plain headings, run-in skills, and readable type [site] - passed
resume-details.spec.ts:54 the print route of "it" has the right-aligned header, plain headings, run-in skills, and readable type [site] - passed
resume-details.spec.ts:54 the print route of "creative" has the right-aligned header, plain headings, run-in skills, and readable type [site]
| passed 7 passed |
| #398 No role is stranded at a page break in the resume PDFs | Tested | 7 tests in 1 file- passed
resume-details.spec.ts:101 the print route of "qa" keeps each role's heading with its bullets at a page break [site] - passed
resume-details.spec.ts:101 the print route of "sdet" keeps each role's heading with its bullets at a page break [site] - passed
resume-details.spec.ts:101 the print route of "con" keeps each role's heading with its bullets at a page break [site] - passed
resume-details.spec.ts:101 the print route of "adp" keeps each role's heading with its bullets at a page break [site] - passed
resume-details.spec.ts:101 the print route of "pmba" keeps each role's heading with its bullets at a page break [site] - passed
resume-details.spec.ts:101 the print route of "it" keeps each role's heading with its bullets at a page break [site] - passed
resume-details.spec.ts:101 the print route of "creative" keeps each role's heading with its bullets at a page break [site]
| passed 7 passed |
| #400 Lanes with a Projects section show project roles under their own heading | Tested | 14 tests in 1 file- passed
lane-resumes.spec.ts:174 resume "qa" web page: project roles sit under a Projects heading ahead of Experience [site] - passed
lane-resumes.spec.ts:174 resume "qa" print route: project roles sit under a Projects heading ahead of Experience [site] - passed
lane-resumes.spec.ts:174 resume "sdet" web page: project roles sit under a Projects heading ahead of Experience [site] - passed
lane-resumes.spec.ts:174 resume "sdet" print route: project roles sit under a Projects heading ahead of Experience [site] - passed
lane-resumes.spec.ts:174 resume "con" web page: has no Projects heading [site] - passed
lane-resumes.spec.ts:174 resume "con" print route: has no Projects heading [site] - passed
lane-resumes.spec.ts:174 resume "adp" web page: has no Projects heading [site] - passed
lane-resumes.spec.ts:174 resume "adp" print route: has no Projects heading [site] - passed
lane-resumes.spec.ts:174 resume "pmba" web page: has no Projects heading [site] - passed
lane-resumes.spec.ts:174 resume "pmba" print route: has no Projects heading [site] - passed
lane-resumes.spec.ts:174 resume "it" web page: has no Projects heading [site] - passed
lane-resumes.spec.ts:174 resume "it" print route: has no Projects heading [site] - passed
lane-resumes.spec.ts:174 resume "creative" web page: has no Projects heading [site] - passed
lane-resumes.spec.ts:174 resume "creative" print route: has no Projects heading [site]
| passed 14 passed |
| #407 Approved bullets and writing rules are in a cached, checked embedding index | Tested | 12 tests in 1 file- passed
embeddings.spec.ts:55 an unchanged second run embeds nothing [site] - passed
embeddings.spec.ts:69 editing one bullet re-embeds only that bullet [site] - passed
embeddings.spec.ts:79 adding a bullet embeds only the new one, and removing a bullet removes its entry [site] - passed
embeddings.spec.ts:91 a different model re-embeds everything [site] - passed
embeddings.spec.ts:98 the script writes the file once, then a second run changes nothing and never loads the embedder [site] - passed
embeddings.spec.ts:116 only public bullets and the writing rules are collected [site] - passed
embeddings.spec.ts:124 the check passes on a fresh index and reports a missing bullet [site] - passed
embeddings.spec.ts:137 the check reports an edited bullet as stale and a removed one as extra [site] - passed
embeddings.spec.ts:148 the check rejects a broken vector and a model change, and an unknown option exits 2 [site] - passed
embeddings.spec.ts:162 every public bullet in the real data is in the index, and the check passes [site] - passed
embeddings.spec.ts:170 every entry has the fields the spec names, one model, and equal-length finite vectors [site] - passed
embeddings.spec.ts:181 no non-public bullet text is in the index [site]
| passed 12 passed |
| #410 Drafting retrieves the closest approved bullets and falls back to the rules alone | Tested | 14 tests in 1 file- passed
retrieval.spec.ts:42 cosine similarity is 1 for the same direction, 0 for a right angle, -1 for opposite, and 0 for bad input [site] - passed
retrieval.spec.ts:51 rank returns at most k bullets, best first, above the minimum score, and never a rule [site] - passed
retrieval.spec.ts:61 equal scores are ordered by id, so the order never changes between runs [site] - passed
retrieval.spec.ts:69 the default is the top 5 above the configured minimum score [site] - passed
retrieval.spec.ts:81 a good match returns results and no fallback, and logs nothing [site] - passed
retrieval.spec.ts:89 nothing above the minimum score gives no results, a reason, and a logged fallback [site] - passed
retrieval.spec.ts:99 an embedding error does not stop drafting: it gives no results and logs the reason [site] - passed
retrieval.spec.ts:110 a vector of the wrong size, an empty description, and an index with no bullets each fall back and log [site] - passed
retrieval.spec.ts:126 prepareDraft still builds the plain prompt when retrieval fails or is turned off [site] - passed
retrieval.spec.ts:147 the expected bullet is in the top 3 for at least 8 of the 10 queries (recall@3 of 80% or more) [site] - passed
retrieval.spec.ts:154 every expected bullet is a real public bullet that is in the index [site] - passed
retrieval.spec.ts:163 the off-topic queries clear no bullet, and each on-topic query clears at least one [site] - passed
retrieval.spec.ts:171 the query vectors are complete and current for retrieval/queries.yaml [site] - passed
retrieval.spec.ts:175 the check mode fails when a query has no vector, or its expected bullet changed, and an edit re-embeds nothing extra [site]
| passed 14 passed |
| #411 Retrieved bullets reach the model as labelled style references it must not copy | Tested | 17 tests in 1 file- passed
retrieval.spec.ts:218 with no examples the message is exactly the one the eval sends today [site] - passed
retrieval.spec.ts:222 the examples sit in a labelled block after the description, in order, in the message [site] - passed
retrieval.spec.ts:231 the block tells the model to match style and never copy facts, numbers, tools, or wording [site] - passed
retrieval.spec.ts:238 the block also tells the model not to add a result, purpose, or benefit the description does not state [site] - passed
retrieval.spec.ts:246 the examples never enter the system prompt, which still holds the unchanged writing rules [site] - passed
retrieval.spec.ts:263 a verbatim copy fails, even with changed case and punctuation [site] - passed
retrieval.spec.ts:268 copying a large part of an example fails, and a reworded draft passes [site] - passed
retrieval.spec.ts:273 over 80% fails and exactly 80% passes [site] - passed
retrieval.spec.ts:283 empty text never counts as a copy [site] - passed
retrieval.spec.ts:288 no two different real bullets trip the check, so a genuine bullet is never blocked by another [site] - passed
retrieval.spec.ts:314 --dry-run prints the sources with scores and the full prompt, and calls no API [site] - passed
retrieval.spec.ts:326 a clean draft passes every check [site] - passed
retrieval.spec.ts:333 a draft that copies a retrieved bullet exits 1 and names it [site] - passed
retrieval.spec.ts:340 a draft that breaks a writing rule exits 1 [site] - passed
retrieval.spec.ts:347 --no-retrieval sends the plain message and shows no sources [site] - passed
retrieval.spec.ts:355 bad options and a missing description are refused before anything runs [site] - passed
retrieval.spec.ts:363 without a key, a live run stops with a clear message instead of calling the API [site]
| passed 17 passed |
| #414 The bullet eval compares drafting with retrieval off and on | Tested | 9 tests in 1 file- passed
retrieval-eval.spec.ts:57 the vectors of the fixed prompts are committed, complete, and current [site] - passed
retrieval-eval.spec.ts:63 each prompt gets at most k approved bullets at the minimum score or higher, best first, and most get some [site] - passed
retrieval-eval.spec.ts:77 a prompt with no bullet above the floor is drafted without examples: the message is the plain one [site] - passed
retrieval-eval.spec.ts:84 a prompt with no stored vector is an error that says how to fix it [site] - passed
retrieval-eval.spec.ts:88 the retrieval figures are the recall on the fixed queries, the average similarity, and how many prompts got nothing [site] - passed
retrieval-eval.spec.ts:101 style signals count verb reuse, different verbs, and length, and need no model [site] - passed
retrieval-eval.spec.ts:112 a live run drafts every prompt with retrieval off and then on, and the on messages carry the examples [site] - passed
retrieval-eval.spec.ts:166 the report puts the two modes side by side, then the retrieval figures and the style signals [site] - passed
retrieval-eval.spec.ts:185 a retrieval-on draft that copies a reference example fails the on column only [site]
| passed 9 passed |
| #415 The eval gates on retrieval on and keeps a history of recorded baselines | Tested | 6 tests in 1 file- passed
retrieval-eval.spec.ts:203 the run exits 1 when retrieval on is below the threshold, or when retrieval off is [site] - passed
retrieval-eval.spec.ts:222 a run that cannot be done exits 2, never 1 [site] - passed
retrieval-eval.spec.ts:245 recording a baseline writes both modes and the fingerprints, and adds one history line each time [site] - passed
retrieval-eval.spec.ts:283 the committed baseline was recorded with the current retrieval settings [site] - passed
retrieval-eval.spec.ts:292 the history file is valid, and its last line is the committed baseline [site] - passed
retrieval-eval.spec.ts:313 the check mode fails when the vector of an eval prompt is missing or stale [site]
| passed 6 passed |
| #419 Workflow installs skip the unused onnxruntime GPU download | Tested | 3 tests in 1 file- passed
workflow-install.spec.ts:28 the six workflows that install dependencies are all found, so this check cannot pass by finding nothing [site] - passed
workflow-install.spec.ts:32 every install step sets ONNXRUNTIME_NODE_INSTALL to skip [site] - passed
workflow-install.spec.ts:37 no install step also hands a secret to the install [site]
| passed 3 passed |
| #422 The draft command remembers accepted and rejected drafts on this computer | Tested | 20 tests in 1 file- passed
draft-memory.spec.ts:39 a new draft waits for a verdict, only one waits at a time, and it can be accepted or rejected [site] - passed
draft-memory.spec.ts:50 the signals are the rejected opening verbs, once each, and the newest accepted bullets [site] - passed
draft-memory.spec.ts:60 the block names the verbs to avoid and the accepted bullets, and is empty when there is nothing to say [site] - passed
draft-memory.spec.ts:70 a draft is checked against the rejected verbs by its first word [site] - passed
draft-memory.spec.ts:76 only the newest 20 drafts are kept [site] - passed
draft-memory.spec.ts:83 the file round-trips, a missing or damaged file is an empty memory, and clearing deletes it [site] - passed
draft-memory.spec.ts:101 with no memory the message is exactly what it was before memory existed [site] - passed
draft-memory.spec.ts:108 with memory the block comes last, after the reference examples, and the writing rules do not change [site] - passed
draft-memory.spec.ts:130 a draft is recorded as waiting, and --reject marks it and says which verb is now avoided [site] - passed
draft-memory.spec.ts:145 the next draft is told to avoid the rejected verb, and a clean draft passes the memory check [site] - passed
draft-memory.spec.ts:158 a draft that opens with a rejected verb is retried once, and the second try is used [site] - passed
draft-memory.spec.ts:171 a draft that repeats the rejected verb even after the retry fails the check and exits 1 [site] - passed
draft-memory.spec.ts:181 --accept makes the bullet a style guide for later drafts [site] - passed
draft-memory.spec.ts:190 --no-memory leaves the memory out of the prompt and out of the file [site] - passed
draft-memory.spec.ts:202 --dry-run shows the memory in the prompt but calls nothing and records nothing [site] - passed
draft-memory.spec.ts:213 --memory lists what is stored, and --clear-memory wipes it [site] - passed
draft-memory.spec.ts:227 --accept or --reject with no draft waiting stops with a clear message [site] - passed
draft-memory.spec.ts:233 the commands take no description, and only one at a time [site] - passed
draft-memory.spec.ts:242 the memory file is under private/, which Git ignores [site] - passed
draft-memory.spec.ts:248 the bullet eval never uses the memory, so its messages and baseline cannot change because of it [site]
| passed 20 passed |
| #425 A read-only page shows which bullets retrieval picks for the fixed test queries | Tested | 9 tests in 1 file- passed
retrieval-page.spec.ts:35 it is a real page of the site: one heading, a main landmark, in the sitemap [site] - passed
retrieval-page.spec.ts:45 all 13 queries are listed in order, each in a panel that starts collapsed [site] - passed
retrieval-page.spec.ts:54 a panel opens with a click and with the keyboard, and the list is hidden until it does [site] - passed
retrieval-page.spec.ts:72 an opened panel lists the bullets retrieval picks, best first, with their scores, and marks the expected one [site] - passed
retrieval-page.spec.ts:89 the off-topic queries show that nothing reached the floor and the draft would use the writing rules alone [site] - passed
retrieval-page.spec.ts:103 the recall line and the miss match a calculation made again from the committed vectors [site] - passed
retrieval-page.spec.ts:123 only public bullets and the test queries are on the page [site] - passed
retrieval-page.spec.ts:137 it works without JavaScript and does not scroll sideways on a phone [site] - passed
retrieval-page.spec.ts:149 the This site project page links to it [site]
| passed 9 passed |