QA Regression Checklist

vercel/commerce

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:

During execution:

Completion criteria:

Estimated execution times:


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 (/)
# 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])
# 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)
# 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])
# 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])
# 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.

# Check Steps Expected Result Priority Category Est. Time Source
RC-075 404 page renders for invalid dynamic route — Coverage Scope: /[page], /product/[handle], /search/[collection] Navigate to an invalid URL for each route (e.g., /no-such-page, /product/no-such-product, /search/no-such-collection). Observe each. The application's 404 Not Found page renders for each invalid URL; no blank screen or stack trace is shown. P1 Error Handling 90s Item Detail (/[page]); Product Detail (/product/[handle]); Search Detail (/search/[collection])
RC-076 All public screens are accessible without authentication — Coverage Scope: /, /[page], /product/[handle], /search, /search/[collection] Open a private/incognito browser window. Navigate to each route in turn. Each page renders fully without a login redirect or authentication error. P1 Security 120s Home (/); Item Detail (/[page]); Product Detail (/product/[handle]); Search (/search); Search Detail (/search/[collection])
RC-077 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:


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.
Accessibility Category: verifies semantic HTML, ARIA attributes, keyboard navigation, and screen reader compatibility.
State 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]