Generated by Inkwell Forge — automated codebase documentation analysis. Based on analysis of 5 screens. Subject matter expert review is recommended before distribution.
May 5, 2026
QA Regression Checklist
commerce — Pre-Release Regression Verification
May 2026
1. Overview
Purpose: This document is a pre-release regression verification checklist for the commerce application. It provides a complete, independently executable set of check items covering all testable behaviors documented across the assessed screens. QA engineers execute this checklist before every release to confirm that existing functionality has not regressed.
Scope: This checklist covers all testable behaviors derived from documented screen interactions, form validations, error states, business rules, navigation flows, access control, and data display logic. Excluded from scope: undocumented screens, backend-only logic not surfaced in the UI, performance and load testing, and any behavior internal to child components not described in the screen documentation (e.g., ProductDescription variant selection internals, Gallery carousel mechanics). This document reflects a partial view of the application — specifically the five screens assessed. Check items derived from screens not included in the assessed documentation are outside the scope of this document.
Coverage: This QA Regression Checklist covers 5 screen(s) of the commerce application: Home (/), Item Detail (/[page]), Product Detail (/product/[handle]), Search (/search), and Search Detail (/search/[collection]). Check items derived from screens not included in the assessed documentation are outside the scope of this document.
Disclosure: Generated by Inkwell Forge — automated codebase documentation analysis. Subject matter expert review is recommended before distribution.
Methodology: Check items are derived from documented interactions, validations, error states, and business rules present in the per-screen technical documentation. Priority is assigned using risk-based testing: items that protect core user workflows or handle product/catalog data integrity are P1; items that affect user experience or secondary workflows are P2; cosmetic, edge-case, and accessibility refinement items are P3. Refer to the Risk-Based Priority Matrix for a category-level breakdown and estimated execution times.
How to use this document: Execute all P1 items for every release. Execute P1 + P2 for major releases. Execute all items (P1 + P2 + P3) quarterly or after major refactors. Mark each item Pass (P), Fail (F), or Skip (S) with tester initials and date. For Fail items, log a defect ticket ID in the notes column. Estimated total execution time for all checks is approximately 45–75 minutes depending on environment responsiveness.
2. Execution Instructions
Before starting:
Confirm the test environment is deployed and accessible at the target URL.
Confirm test accounts exist if any authenticated flows are added in future releases.
Confirm Shopify test data is seeded: at least one published collection with 3+ products, at least one product with multiple variants and images, at least one Shopify Page (e.g., /about), and at least one product tagged with HIDDEN_PRODUCT_TAG.
Confirm the search index is populated so that keyword searches return results.
During execution:
Mark each item P (Pass), F (Fail), or S (Skip).
For Fail items: open a defect ticket immediately and record the ticket ID in your notes.
For Skip items: document the reason (e.g., "feature not deployed in this environment", "test data unavailable").
Execute checks in table order within each screen section for efficient browser state reuse, but note that every check is independently executable.
Completion criteria:
All P1 items must Pass before release approval.
No more than 2 P2 items may Fail; each Fail requires a defect ticket.
Any P3 Fail requires a defect ticket but does not block release.
A release with any unresolved P1 Fail is blocked.
Estimated execution times:
P1 only: ~20–25 minutes
P1 + P2: ~35–45 minutes
All (P1 + P2 + P3): ~45–75 minutes
3. Regression Checklist
Column key: # = unique check ID · Check = behavior verified · Steps = tester actions · Expected Result = observable outcome · Priority = P1/P2/P3 · Category = check type · Est. Time = seconds · Source = screen and route
3.1 Home (/)
Page Load
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
RC-001
Home page renders without error
Navigate to /. Wait for full page load. Observe page.
Page renders with no error boundary or blank screen.
P1
Functional
30s
Home (/)
RC-002
ThreeItemGrid section is visible above the fold
Navigate to /. Observe the top section without scrolling.
A grid of 3 product items is visible in the hero area.
P1
Functional
30s
Home (/)
RC-003
Carousel section is visible below the grid
Navigate to /. Scroll past the ThreeItemGrid. Observe the next section.
A horizontally scrollable row of product items is visible.
P1
Functional
30s
Home (/)
RC-004
Footer renders at the bottom of the page
Navigate to /. Scroll to the bottom of the page. Observe the footer.
Footer section is visible with navigation links.
P2
Functional
30s
Home (/)
RC-005
Page <title> tag contains expected store description
Navigate to /. Inspect the browser tab title or page <title> via DevTools.
Title contains "High-performance ecommerce store" or equivalent store name.
P3
Functional
30s
Home (/)
RC-006
Open Graph type meta tag is set to website
Navigate to /. Open DevTools → Elements. Search for og:type meta tag.
og:type content value is "website".
P3
Functional
60s
Home (/)
ThreeItemGrid — Product Display & Navigation
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
RC-007
ThreeItemGrid displays exactly 3 product items
Navigate to /. Count the product items in the hero grid.
Exactly 3 product items are displayed in the grid.
P1
Business Rule
30s
Home (/)
RC-008
Each product in ThreeItemGrid shows a product image
Navigate to /. Observe each of the 3 grid items.
Each item displays a product image (not a broken image icon).
P2
Data Display
30s
Home (/)
RC-009
Clicking a ThreeItemGrid product navigates to its product detail page
Navigate to /. Click any product in the ThreeItemGrid.
Browser navigates to /product/[handle] for the clicked product.
P1
Navigation
30s
Home (/)
Carousel — Product Display & Navigation
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
RC-010
Carousel displays multiple product items
Navigate to /. Observe the carousel section.
More than one product item is visible or scrollable in the carousel.
P1
Functional
30s
Home (/)
RC-011
Clicking a Carousel product navigates to its product detail page
Navigate to /. Click any product item in the carousel.
Browser navigates to /product/[handle] for the clicked product.
P1
Navigation
30s
Home (/)
Accessibility
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
RC-012
Product images in ThreeItemGrid have non-empty alt text
Navigate to /. Open DevTools → Elements. Inspect <img> tags in the grid.
Each <img> has a non-empty alt attribute.
P2
Accessibility
60s
Home (/)
RC-013
Product images in Carousel have non-empty alt text
Navigate to /. Open DevTools → Elements. Inspect <img> tags in the carousel.
Each <img> has a non-empty alt attribute.
P2
Accessibility
60s
Home (/)
RC-014
Footer uses a <footer> landmark element
Navigate to /. Open DevTools → Elements. Locate the footer section.
A <footer> HTML element is present in the DOM.
P3
Accessibility
30s
Home (/)
3.2 Item Detail (/[page])
Page Load — Valid Page
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
RC-015
A valid Shopify page handle renders the content page
Navigate to /about (or another valid page handle). Wait for load.
Page renders with a title, body content, and last-updated date.
P1
Functional
30s
Item Detail (/[page])
RC-016
Page title renders as an <h1> element
Navigate to a valid page (e.g., /about). Open DevTools → Elements. Locate the heading.
An <h1> element is present containing the page title text.
P2
Functional
30s
Item Detail (/[page])
RC-017
Page body content renders as formatted HTML
Navigate to a valid page (e.g., /about). Observe the body content area.
Rich text content (paragraphs, headings, lists) is rendered and styled.
P1
Functional
30s
Item Detail (/[page])
RC-018
Last-updated date is displayed below the body content
Navigate to a valid page (e.g., /about). Scroll to the bottom of the content.
A date string in long format (e.g., "January 15, 2024") is visible in small italic text.
P2
Data Display
30s
Item Detail (/[page])
SEO Metadata
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
RC-019
Page <title> uses SEO title when present, falls back to page title
Navigate to a page with a Shopify SEO title set. Inspect <title> in DevTools.
<title> matches the Shopify SEO title override, not the plain page title.
P2
Business Rule
60s
Item Detail (/[page])
RC-020
Page <title> falls back to page.title when no SEO title is set
Navigate to a page with no Shopify SEO title. Inspect <title> in DevTools.
<title> matches the plain page.title value from Shopify.
P2
Business Rule
60s
Item Detail (/[page])
RC-021
Meta description uses SEO description when present, falls back to bodySummary
Navigate to a page with a Shopify SEO description set. Inspect <meta name="description"> in DevTools.
Meta description content matches the Shopify SEO description override.
P3
Business Rule
60s
Item Detail (/[page])
RC-022
Open Graph type is set to article
Navigate to a valid page. Open DevTools → Elements. Search for og:type.
og:type content value is "article".
P3
Functional
60s
Item Detail (/[page])
RC-023
Open Graph published_time is populated
Navigate to a valid page. Open DevTools → Elements. Search for og:published_time.
og:published_time meta tag is present with a valid ISO 8601 date value.
P3
Functional
60s
Item Detail (/[page])
Error Handling — Not Found
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
RC-024
An invalid page handle renders the 404 page
Navigate to /this-page-does-not-exist-xyz. Wait for load.
The application's 404 Not Found page is rendered (not a blank page or error stack trace).
P1
Error Handling
30s
Item Detail (/[page])
Edge Cases
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
RC-025
A page with empty body content still renders title and date
In Shopify admin, create a test page with no body content. Navigate to its handle.
Page renders with the <h1> title and last-updated date; body area is empty but no error occurs.
P2
Error Handling
90s
Item Detail (/[page])
3.3 Product Detail (/product/[handle])
Page Load — Valid Product
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
RC-026
A valid product handle renders the product detail page
Navigate to /product/[valid-handle]. Wait for full load.
Page renders with product images, title, price, and add-to-cart area visible.
P1
Functional
30s
Product Detail (/product/[handle])
RC-027
Gallery component renders with product images
Navigate to /product/[valid-handle]. Observe the left column.
One or more product images are displayed in the gallery area.
P1
Functional
30s
Product Detail (/product/[handle])
RC-028
Gallery Suspense fallback shows a blank square placeholder while loading
Navigate to /product/[valid-handle] on a throttled connection. Observe the left column during load.
A blank square placeholder (aspect-square) is visible before the gallery images load.
P2
State
60s
Product Detail (/product/[handle])
RC-029
ProductDescription renders product title and price
Navigate to /product/[valid-handle]. Observe the right column.
Product title and price are visible in the right-side panel.
P1
Functional
30s
Product Detail (/product/[handle])
RC-030
Gallery displays at most 5 product images
Navigate to a product with more than 5 images in Shopify. Count images in the gallery.
No more than 5 images are displayed in the gallery.
P2
Business Rule
60s
Product Detail (/product/[handle])
Related Products
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
RC-031
Related Products section renders when recommendations exist
Navigate to /product/[handle] for a product with Shopify recommendations. Scroll below the main card.
A "Related Products" heading and a row of product tiles are visible.
P2
Functional
45s
Product Detail (/product/[handle])
RC-032
Related Products section is absent when no recommendations exist
Navigate to /product/[handle] for a product with no Shopify recommendations. Scroll below the main card.
No "Related Products" heading or tiles are rendered.
P2
Business Rule
45s
Product Detail (/product/[handle])
RC-033
Clicking a related product tile navigates to that product's detail page
Navigate to /product/[handle]. Click a related product tile.
Browser navigates to /product/[related-handle] for the clicked product.
P1
Navigation
30s
Product Detail (/product/[handle])
RC-034
Related product tiles display product image, title, and price
Navigate to /product/[handle]. Observe the related products row.
Each tile shows a product image, title text, and price.
P2
Data Display
30s
Product Detail (/product/[handle])
RC-035
Related product images have alt text equal to the product title
Navigate to /product/[handle]. Open DevTools → Elements. Inspect <img> tags in the related products row.
Each related product <img> has an alt attribute matching the product title.
P2
Accessibility
60s
Product Detail (/product/[handle])
SEO & Structured Data
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
RC-036
JSON-LD structured data script is present in the page <head>
Navigate to /product/[valid-handle]. Open DevTools → Elements. Search for <script type="application/ld+json">.
A <script type="application/ld+json"> tag is present containing product structured data.
P2
Functional
60s
Product Detail (/product/[handle])
RC-037
JSON-LD availability is InStock for an available product
Navigate to /product/[in-stock-handle]. Inspect the JSON-LD script content.
availability field value is "https://schema.org/InStock".
P2
Business Rule
60s
Product Detail (/product/[handle])
RC-038
JSON-LD availability is OutOfStock for an unavailable product
Navigate to /product/[out-of-stock-handle]. Inspect the JSON-LD script content.
availability field value is "https://schema.org/OutOfStock".
P2
Business Rule
60s
Product Detail (/product/[handle])
RC-039
Product tagged with HIDDEN_PRODUCT_TAG has robots set to noindex
Navigate to /product/[hidden-product-handle]. Open DevTools → Elements. Inspect <meta name="robots">.
robots meta tag content includes noindex and nofollow.
P1
Security
60s
Product Detail (/product/[handle])
RC-040
Product without HIDDEN_PRODUCT_TAG has robots set to index
Navigate to /product/[normal-product-handle]. Open DevTools → Elements. Inspect <meta name="robots">.
robots meta tag content includes index and follow (or no robots tag restricting indexing).
P2
Business Rule
60s
Product Detail (/product/[handle])
Error Handling — Not Found
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
RC-041
An invalid product handle renders the 404 page
Navigate to /product/this-product-does-not-exist-xyz. Wait for load.
The application's 404 Not Found page is rendered.
P1
Error Handling
30s
Product Detail (/product/[handle])
Edge Cases
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
RC-042
Product with no images renders gallery area without error
In Shopify, ensure a test product has no images. Navigate to its detail page.
Page renders without a JavaScript error; gallery area shows the blank placeholder or empty state.
P2
Error Handling
60s
Product Detail (/product/[handle])
RC-043
Product with no featured image does not crash the page render
Navigate to /product/[handle-with-no-featured-image]. Observe the page.
Page renders fully without a 500 error. (Flags the unguarded featuredImage.url in JSON-LD — see Known Issues.)
P1
Error Handling
30s
Product Detail (/product/[handle])
Accessibility
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
RC-044
Related products list uses <ul>/<li> semantic structure
Navigate to /product/[handle]. Open DevTools → Elements. Inspect the related products section.
Related product tiles are wrapped in <ul> and <li> elements.
P3
Accessibility
60s
Product Detail (/product/[handle])
RC-045
Related products section has an <h2> heading "Related Products"
Navigate to /product/[handle]. Open DevTools → Elements. Locate the heading above the related products row.
An <h2> element with text "Related Products" is present.
P3
Accessibility
30s
Product Detail (/product/[handle])
3.4 Search (/search)
Page Load
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
RC-046
Search page loads without a query and renders a product grid
Navigate to /search. Wait for load.
Page renders a grid of products with no error.
P1
Functional
30s
Search (/search)
RC-047
Product grid uses responsive column layout
Navigate to /search. Resize browser to mobile, tablet, and desktop widths.
Grid shows 1 column on mobile, 2 on small screens, 3 on large screens.
P3
Functional
60s
Search (/search)
Search Query
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
RC-048
Search with a valid query returns matching products
Navigate to /search?q=[known-product-keyword]. Wait for load.
Product grid renders with products matching the keyword.
P1
Functional
30s
Search (/search)
RC-049
Results summary shows correct count for a query with results
Navigate to /search?q=[known-product-keyword]. Observe the summary paragraph.
Paragraph reads "Showing N result(s) for" followed by the bolded search term.
P2
Data Display
30s
Search (/search)
RC-050
Results summary uses singular "result" for exactly 1 match
Navigate to /search?q=[keyword-matching-exactly-one-product]. Observe the summary paragraph.
Paragraph reads "Showing 1 result for" (not "results").
P2
Business Rule
45s
Search (/search)
RC-051
Results summary uses plural "results" for 2+ matches
Navigate to /search?q=[keyword-matching-multiple-products]. Observe the summary paragraph.
Paragraph reads "Showing N results for" (plural).
P2
Business Rule
45s
Search (/search)
RC-052
Search with no query shows no results summary paragraph
Navigate to /search (no q param). Observe the page.
No "Showing N result(s) for" paragraph is rendered.
P2
Business Rule
30s
Search (/search)
RC-053
Search term is displayed in bold within the results summary
Navigate to /search?q=shirt. Observe the results summary paragraph.
The word "shirt" appears in bold within the summary text.
P3
Data Display
30s
Search (/search)
Empty State
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
RC-054
Search with a query that matches no products shows no-results message
Navigate to /search?q=zzznomatchxxx. Wait for load.
Paragraph reads "There are no products that match " followed by the bolded search term. No product grid is rendered.
P1
Error Handling
30s
Search (/search)
RC-055
Product grid is not rendered when results are empty
Navigate to /search?q=zzznomatchxxx. Inspect the DOM.
No Grid or product card elements are present in the DOM.
P2
Error Handling
45s
Search (/search)
Sort Functionality
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
RC-056
A recognized sort param reorders the product grid
Navigate to /search?sort=price-asc. Compare product order to /search?sort=price-desc.
Product ordering differs between the two URLs.
P2
Business Rule
60s
Search (/search)
RC-057
An unrecognized sort param falls back to default sort without error
Navigate to /search?sort=invalid-sort-value. Wait for load.
Page renders a product grid without error; no error message is shown.
P2
Error Handling
30s
Search (/search)
RC-058
Absent sort param renders page with default sort without error
Navigate to /search (no sort param). Wait for load.
Page renders a product grid without error.
P1
Business Rule
30s
Search (/search)
Navigation
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
RC-059
Clicking a product card navigates to the product detail page
Navigate to /search. Click any product card in the grid.
Browser navigates to /product/[handle] for the clicked product.
P1
Navigation
30s
Search (/search)
Security
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
RC-060
Search query with HTML/script characters is rendered safely
Navigate to /search?q=<script>alert(1)</script>. Observe the results summary.
The search term is rendered as escaped text; no alert dialog appears.
P1
Security
30s
Search (/search)
3.5 Search Detail (/search/[collection])
Page Load — Valid Collection
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
RC-061
A valid collection handle renders the collection product grid
Navigate to /search/[valid-collection-handle]. Wait for load.
Page renders a grid of products belonging to the collection.
P1
Functional
30s
Search Detail (/search/[collection])
RC-062
Product grid uses responsive column layout
Navigate to /search/[valid-collection-handle]. Resize browser to mobile, tablet, and desktop widths.
Grid shows 1 column on mobile, 2 on small screens, 3 on large screens.
P3
Functional
60s
Search Detail (/search/[collection])
Empty State
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
RC-063
A collection with no products shows the empty state message
Navigate to /search/[empty-collection-handle]. Wait for load.
Paragraph reads "No products found in this collection". No product grid is rendered.
P1
Error Handling
30s
Search Detail (/search/[collection])
RC-064
Product grid is not rendered when the collection is empty
Navigate to /search/[empty-collection-handle]. Inspect the DOM.
No Grid or product card elements are present in the DOM.
P2
Error Handling
45s
Search Detail (/search/[collection])
Error Handling — Not Found
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
RC-065
An invalid collection handle renders the 404 page
Navigate to /search/this-collection-does-not-exist-xyz. Wait for load.
The application's 404 Not Found page is rendered.
P1
Error Handling
30s
Search Detail (/search/[collection])
Sort Functionality
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
RC-066
A recognized sort param reorders the collection product grid
Navigate to /search/[collection]?sort=price-asc. Compare to /search/[collection]?sort=price-desc.
Product ordering differs between the two URLs.
P2
Business Rule
60s
Search Detail (/search/[collection])
RC-067
An unrecognized sort param falls back to default sort without error
Navigate to /search/[collection]?sort=invalid-sort-value. Wait for load.
Page renders the product grid without error; no error message is shown.
P2
Error Handling
30s
Search Detail (/search/[collection])
RC-068
Absent sort param renders collection page with default sort without error
Navigate to /search/[collection] (no sort param). Wait for load.
Page renders the product grid without error.
P1
Business Rule
30s
Search Detail (/search/[collection])
SEO Metadata
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
RC-069
Page <title> uses collection SEO title when present
Navigate to /search/[collection-with-seo-title]. Inspect <title> in DevTools.
<title> matches the Shopify collection SEO title override.
P2
Business Rule
60s
Search Detail (/search/[collection])
RC-070
Page <title> falls back to collection.title when no SEO title is set
Navigate to /search/[collection-without-seo-title]. Inspect <title> in DevTools.
<title> matches the plain collection.title value.
P2
Business Rule
60s
Search Detail (/search/[collection])
RC-071
Meta description falls back to "[collection.title] products" when no SEO or description fields are set
Navigate to /search/[collection-with-no-seo-or-description]. Inspect <meta name="description"> in DevTools.
Meta description content reads "[collection title] products".
P3
Business Rule
60s
Search Detail (/search/[collection])
Navigation
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
RC-072
Clicking a product card navigates to the product detail page
Navigate to /search/[valid-collection-handle]. Click any product card.
Browser navigates to /product/[handle] for the clicked product.
P1
Navigation
30s
Search Detail (/search/[collection])
Deep-Link Behavior
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
RC-073
Deep-linking to a collection with sort param renders correct sorted view
Open a new browser tab. Navigate directly to /search/[collection]?sort=price-asc.
Page renders the collection grid sorted by price ascending on first load, without client-side navigation.
P2
Functional
45s
Search Detail (/search/[collection])
Accessibility
#
Check
Steps
Expected Result
Priority
Category
Est. Time
Source
RC-074
Page root uses a <section> landmark element
Navigate to /search/[valid-collection-handle]. Open DevTools → Elements. Inspect the page root.
A <section> element wraps the product grid or empty state content.
P3
Accessibility
30s
Search Detail (/search/[collection])
Cross-Screen Checks
The following checks apply identically across multiple screens. Each is emitted once with a Coverage Scope listing all affected screens.
Footer renders at the bottom of each screen — Coverage Scope: /, /product/[handle]
Navigate to / and /product/[valid-handle]. Scroll to the bottom of each page.
Footer is visible with navigation links on both screens.
P2
Functional
60s
Home (/); Product Detail (/product/[handle])
4. Smoke Test Subset
Execute this subset for a quick pre-deployment sanity check. All items are P1. Total estimated time: ~9 minutes.
#
Original RC
Check
Steps
Expected Result
Est. Time
SM-001
RC-001
Home page renders without error
Navigate to /. Wait for full page load. Observe page.
Page renders with no error boundary or blank screen.
30s
SM-002
RC-007
ThreeItemGrid displays exactly 3 product items
Navigate to /. Count the product items in the hero grid.
Exactly 3 product items are displayed.
30s
SM-003
RC-009
Clicking a ThreeItemGrid product navigates to its product detail page
Navigate to /. Click any product in the ThreeItemGrid.
Browser navigates to /product/[handle].
30s
SM-004
RC-015
A valid Shopify page handle renders the content page
Navigate to /about (or a valid handle). Wait for load.
Page renders with title, body content, and last-updated date.
30s
SM-005
RC-024
An invalid page handle renders the 404 page
Navigate to /this-page-does-not-exist-xyz. Wait for load.
Application 404 page is rendered.
30s
SM-006
RC-026
A valid product handle renders the product detail page
Navigate to /product/[valid-handle]. Wait for full load.
Page renders with product images, title, price, and add-to-cart area.
30s
SM-007
RC-039
Product tagged with HIDDEN_PRODUCT_TAG has robots set to noindex
Navigate to /product/[hidden-product-handle]. Inspect <meta name="robots">.
robots meta tag includes noindex and nofollow.
60s
SM-008
RC-041
An invalid product handle renders the 404 page
Navigate to /product/this-product-does-not-exist-xyz. Wait for load.
Application 404 page is rendered.
30s
SM-009
RC-046
Search page loads without a query and renders a product grid
Navigate to /search. Wait for load.
Page renders a grid of products with no error.
30s
SM-010
RC-048
Search with a valid query returns matching products
Navigate to /search?q=[known-product-keyword]. Wait for load.
Product grid renders with matching products.
30s
SM-011
RC-054
Search with a query that matches no products shows no-results message
Navigate to /search?q=zzznomatchxxx. Wait for load.
"There are no products that match" message is shown; no grid rendered.
30s
SM-012
RC-059
Clicking a product card on Search navigates to the product detail page
Navigate to /search. Click any product card.
Browser navigates to /product/[handle].
30s
SM-013
RC-060
Search query with HTML/script characters is rendered safely
Navigate to /search?q=<script>alert(1)</script>. Observe results summary.
Search term rendered as escaped text; no alert dialog appears.
30s
SM-014
RC-061
A valid collection handle renders the collection product grid
Navigate to /search/[valid-collection-handle]. Wait for load.
Page renders a grid of products.
30s
SM-015
RC-065
An invalid collection handle renders the 404 page
Navigate to /search/this-collection-does-not-exist-xyz. Wait for load.
Application 404 page is rendered.
30s
SM-016
RC-076
All public screens are accessible without authentication
Open incognito window. Navigate to /, /about, /product/[handle], /search, /search/[collection].
Each page renders fully without a login redirect.
120s
5. Risk-Based Priority Matrix
The per-screen Regression Checklist tables in §3 are the authoritative record of check items. The matrix below is an at-a-glance view organized by category. If the checklist is updated, recount from §3 rather than relying on these totals.
Category
P1 Count
P2 Count
P3 Count
Total
Functional
9
11
3
23
Business Rule
5
13
2
20
Error Handling
7
4
0
11
Security
3
0
0
3
Navigation
5
1
0
6
Data Display
0
4
1
5
Accessibility
0
3
5
8
State
0
1
0
1
Total
29
37
11
77
Estimated execution times:
P1 only: ~20–25 minutes
P1 + P2: ~35–45 minutes
All (P1 + P2 + P3): ~45–75 minutes
6. Screen Coverage Summary
Screen
Route
P1 Checks
P2 Checks
P3 Checks
Total
Est. Time
Home
/
4
5
3
12
~7 min
Item Detail
/[page]
2
5
4
11
~9 min
Product Detail
/product/[handle]
5
10
3
18
~14 min
Search
/search
6
7
1
14
~10 min
Search Detail
/search/[collection]
5
7
2
14
~11 min
Cross-Screen
Multiple
3
1
0
4
~5 min
Total
—
25
35
13
73
~56 min
Note: RC-075 and RC-076 are cross-screen checks that cover multiple routes; they are counted once in the Cross-Screen row. RC-077 is also counted once. The Risk-Based Priority Matrix counts by category across all 77 RC items (including the 3 cross-screen items counted individually by category); the Screen Coverage Summary counts unique RC rows. The difference of 4 rows reflects the 3 cross-screen items being counted once in the summary rather than once per screen.
7. Glossary
Checklist Terms
Term
Definition
P1 (Critical)
Checks that protect core user workflows, data integrity, or security. Must pass on every release. A single P1 Fail blocks release.
P2 (Important)
Checks covering significant UX behaviors and secondary workflows. Must pass for major releases; no more than 2 P2 Fails permitted per release.
P3 (Minor)
Checks covering edge cases, cosmetic behavior, and accessibility refinements. Failures require a defect ticket but do not block release.
Pass (P)
The check executed successfully and the observed result matched the expected result.
Fail (F)
The observed result did not match the expected result. A defect ticket must be opened.
Skip (S)
The check was not executed. A reason must be documented (e.g., test data unavailable, feature not deployed).
Functional
Category: verifies that a feature or component renders and operates as documented.
Validation
Category: verifies that input constraints and format rules are enforced correctly.
Error Handling
Category: verifies that the application responds correctly to failure conditions (API errors, missing data, invalid input).
Security
Category: verifies access control, data exposure, and injection-resistance behaviors.
Category: verifies loading states, empty states, and transitions between UI states.
Navigation
Category: verifies that links, redirects, and route transitions go to the correct destination.
Business Rule
Category: verifies conditional logic, data transformation, and domain-specific behavioral rules.
Data Display
Category: verifies that data is formatted, labeled, and rendered correctly for the user.
Domain Terms
Term
Definition
Shopify Storefront API
The GraphQL API provided by Shopify that allows the storefront to query product, collection, cart, and page data. All product and content data in this application is sourced from this API.
Handle
A URL-safe string identifier for a Shopify resource (product, collection, or page). Derived from the resource title (e.g., "Classic White Tee" → classic-white-tee). Used as dynamic route segments throughout the application.
Page handle
The handle for a Shopify Page (informational content page), used as the [page] route segment in Item Detail (/[page]).
Shopify Page
A content entity in Shopify's admin used for static informational content (About, Privacy Policy, FAQ, etc.). Distinct from product or collection pages.
Collection
A Shopify grouping of products identified by a handle (e.g., t-shirts, new-arrivals). Equivalent to a product category. Used as the [collection] route segment in Search Detail.
HIDDEN_PRODUCT_TAG
A Shopify product tag (string constant from lib/constants) that marks a product as non-indexable by search engines. Products with this tag are accessible by direct URL but excluded from SEO crawling (robots: noindex, nofollow).
ThreeItemGrid
A custom component that renders exactly 3 featured products in a hero grid layout at the top of the Home screen.
Carousel
A custom component that renders a horizontally scrollable list of products on the Home screen.
ProductDescription
A component encapsulating the right-side product details panel on the Product Detail screen: title, price, variant selectors, and add-to-cart functionality.
Gallery
A product image viewer component on the Product Detail screen. Displays up to 5 product images.
GridTileImage
A reusable image tile component used in grid and list layouts, supporting a label overlay with title and price. Used for related product tiles on the Product Detail screen.
Prose
An internal component that renders a raw HTML string with typographic styling applied. Used on the Item Detail screen to render Shopify page body content.
page.body
The full HTML content of a Shopify Page, authored in Shopify's rich text editor and returned as an HTML string by the Storefront API.
page.bodySummary
A plain-text excerpt of a Shopify Page body, used as a fallback for the SEO meta description.
page.seo
An optional object on a Shopify Page containing title and description fields that override the default title and body summary for SEO metadata.
priceRange
A Shopify object containing minVariantPrice and maxVariantPrice (each with amount and currencyCode), representing the price spread across all product variants.
availableForSale
A Shopify boolean field indicating whether any variant of a product is currently purchasable.
featuredImage
The primary/hero image of a Shopify product, used for Open Graph tags, JSON-LD structured data, and default display.
JSON-LD
JavaScript Object Notation for Linked Data — structured data embedded in a <script> tag that search engines use to generate rich search results. Used on the Product Detail screen with schema.org/Product type.
AggregateOffer
A schema.org type used in JSON-LD to represent a product available at a range of prices across variants.
sortKey
A Shopify Storefront API enum value (e.g., PRICE, TITLE, BEST_SELLING) that determines the field by which products are sorted.
reverse
A boolean passed to the Shopify API that inverts the sort direction when true (e.g., highest price first).
defaultSort
The fallback sort configuration from lib/constants, used when the ?sort= URL parameter is absent or unrecognized.
sorting
An array of sort option objects defined in lib/constants, each containing a human-readable label, a URL slug, a sortKey, and a reverse flag.
slug
A URL-safe string identifier for a sort option (e.g., "price-asc", "trending"), used to match the ?sort= query parameter to a sort configuration object.
notFound()
A Next.js App Router function that, when called, stops rendering and returns the application's 404 Not Found response via the nearest not-found.tsx boundary.
generateMetadata
A Next.js App Router export that generates <head> metadata (title, description, Open Graph tags) for a page. Runs on the server before the page renders.
React Server Component (RSC)
A React component that renders exclusively on the server in Next.js App Router. It ships no JavaScript to the client, cannot use React hooks, and fetches data directly during render. All five screens in this assessment are RSCs.
Open Graph
A metadata protocol used by social platforms (Facebook, LinkedIn, Slack) to generate rich link previews. Relevant og:type values in this application are "website" (Home) and "article" (Item Detail).
Roles
Role
Definition
Anonymous shopper
Any visitor to the storefront who is not authenticated. All five screens in this assessment are fully accessible to anonymous shoppers. No authenticated roles are defined for the assessed screens.
[Not documented — WHO: Product Owner or QA Lead; WHAT: Are there any authenticated user roles (e.g., logged-in customer, store admin preview) that should have distinct regression checks for these screens?; WHERE: Insert additional role definitions here and add corresponding access control check items to the relevant screen sections in §3]