QA Regression Checklist

myowjaYOY/commerce

Generated by DocAgent — automated codebase documentation analysis. Based on analysis of 3 screens. Subject matter expert review is recommended before distribution.

April 19, 2026

QA Regression Checklist

Application: commerce Document Title: QA Regression Checklist Date: April 2026


1. Overview

This document is a pre-release regression verification checklist for the commerce web application. Its purpose is to provide QA engineers with a complete, independently executable set of checks that can be performed before every release to verify that documented screen functionality is working correctly. Each check item is derived directly from the technical screen documentation and is scoped to observable, testable behaviors.

Scope: This checklist covers all testable behaviors documented for the five assessed screens: page load states, conditional rendering, business rule outcomes, navigation, error handling, access control, data display, and accessibility. Excluded from scope are: undocumented screens, backend-only logic within lib/shopify service functions, performance and load testing, child component internals not described in the screen documentation (e.g., Gallery, ProductDescription, Carousel, ThreeItemGrid internal behavior), and CI/CD pipeline verification.

Coverage: This QA Regression Checklist covers 5 screen(s) of the commerce application. Screens assessed: Home (/), Search (/search), Search Detail (/search/[collection]), Product Detail (/product/[handle]), and Item Detail (/[page]). Check items derived from screens not included in the assessed documentation are outside the scope of this document. This document reflects a partial view of the application — screens such as cart, checkout, account, and header/navbar are not assessed here.

Disclosure: Generated by DocAgent — automated codebase documentation analysis. Subject matter expert review is recommended before distribution.

Methodology: Check items are derived from documented interactions, validations, error states, conditional rendering logic, and business rules described in the per-screen technical documentation. Priority is assigned using risk-based testing: items that protect core user workflows or data integrity are P1; items that affect significant user experience or secondary workflows are P2; cosmetic, edge-case, and accessibility-gap items are P3.

How to use this document: Execute all P1 items for every release. Execute P1+P2 for major releases. Execute all items quarterly or after major refactors. Mark each item Pass (P), Fail (F), or Skip (S) with tester initials and date. For any Fail, log a defect ticket ID in the notes column.


2. Execution Instructions

Before starting:

[Not documented — WHO: QA lead or backend engineer; WHAT: What is the exact string value of HIDDEN_PRODUCT_TAG in the test environment, and what is a known product handle that carries this tag?; WHERE: Insert in the Steps column of RC-062 and RC-063]

[Not documented — WHO: QA lead; WHAT: What are the valid sort slug values defined in the sorting constant array (e.g., price-asc, price-desc, trending)? A complete list is needed to execute sort-related checks.; WHERE: Insert in the Steps column of RC-010, RC-011, RC-036, RC-037, RC-038, RC-039, RC-075, RC-076, RC-077, RC-078]

During execution:

Completion criteria:

Estimated time:


3. Regression Checklist


3.1 Home (/)

Page Load

# Check Steps Expected Result Priority Category Est. Time Source Confidence
RC-001 Home page renders at root route Navigate to /. Wait for full page load. Observe page. Page renders without error; ThreeItemGrid, Carousel, and Footer sections are all visible. P1 Functional 30s Home (/) Documented
RC-002 Home page is publicly accessible without authentication Open a private/incognito browser window. Navigate to /. Page renders fully with no login redirect and no authentication prompt. P1 Security 30s Home (/) Documented
RC-003 Home page OpenGraph metadata is present Navigate to /. View page source (Ctrl+U). Search for og:type. <meta property="og:type" content="website"> is present in the <head>. P2 Functional 45s Home (/) Documented
RC-004 Home page SEO description meta tag is present Navigate to /. View page source. Search for meta name="description". A <meta name="description"> tag is present in the <head> with a non-empty content value. P2 Functional 45s Home (/) Documented

Component Rendering

# Check Steps Expected Result Priority Category Est. Time Source Confidence
RC-005 ThreeItemGrid renders above the fold Navigate to /. Observe the top of the page without scrolling. A featured product grid section is visible in the hero/above-the-fold area. P1 Functional 30s Home (/) Documented
RC-006 Carousel renders below ThreeItemGrid Navigate to /. Scroll past the ThreeItemGrid section. A product carousel section is visible below the featured grid. P1 Functional 30s Home (/) Documented
RC-007 Footer renders at the bottom of the page Navigate to /. Scroll to the bottom of the page. The site footer is visible at the bottom of the page. P2 Functional 30s Home (/) Documented
RC-008 Component render order is correct Navigate to /. Observe the full page layout from top to bottom. Visual order from top to bottom is: ThreeItemGrid, then Carousel, then Footer. P2 Functional 30s Home (/) Documented

3.2 Search (/search)

Page Load

# Check Steps Expected Result Priority Category Est. Time Source Confidence
RC-009 Search page loads without a query parameter Navigate to /search. Wait for full page load. Page renders without error. No results summary text is shown. Product grid renders if products exist in the store. P1 Functional 30s Search (/search) Documented
RC-010 Search page loads with a valid sort parameter Navigate to /search?sort=<valid-sort-slug> (use a known valid slug). Page renders without error. Products are displayed. No error message is shown. P1 Functional 30s Search (/search) Documented
RC-011 Search page loads with an unrecognized sort parameter Navigate to /search?sort=invalid-slug-xyz. Page renders without error using the default sort order. No error message is shown to the user. P2 Business Rule 30s Search (/search) Documented
RC-012 Search page is publicly accessible without authentication Open a private/incognito browser window. Navigate to /search. Page renders fully with no login redirect and no authentication prompt. P1 Security 30s Search (/search) Documented

Search Results — Happy Path

# Check Steps Expected Result Priority Category Est. Time Source Confidence
RC-013 Search with results shows results summary Navigate to /search?q=<term-known-to-return-results>. A summary paragraph appears above the grid reading "Showing N result(s) for" followed by the bolded search term. P1 Functional 30s Search (/search) Documented
RC-014 Search with results shows product grid Navigate to /search?q=<term-known-to-return-results>. A product grid is rendered below the summary text containing one or more product cards. P1 Functional 30s Search (/search) Documented
RC-015 Search term is displayed in bold in the results summary Navigate to /search?q=shirt. Observe the results summary paragraph. The word "shirt" appears in bold within the summary sentence. P2 Data Display 30s Search (/search) Documented
RC-016 Singular "result" text for exactly one result Navigate to /search?q=<term-known-to-return-exactly-one-result>. Summary reads "Showing 1 result for" (singular, not "results"). P2 Business Rule 45s Search (/search) Documented
RC-017 Plural "results" text for more than one result Navigate to /search?q=<term-known-to-return-multiple-results>. Summary reads "Showing N results for" (plural). P2 Business Rule 30s Search (/search) Documented

Search Results — No Results State

# Check Steps Expected Result Priority Category Est. Time Source Confidence
RC-018 Zero-results state shows "no products match" message Navigate to /search?q=xyzzy-no-match-term-12345. Summary paragraph reads "There are no products that match" followed by the bolded search term. No product grid is rendered. P1 Error Handling 45s Search (/search) Documented
RC-019 Product grid is hidden when search returns zero results Navigate to /search?q=xyzzy-no-match-term-12345. No product grid or product cards are visible on the page. P1 Functional 30s Search (/search) Documented
RC-020 Search term is displayed in bold in the no-results message Navigate to /search?q=xyzzy-no-match-term-12345. Observe the message. The search term appears in bold within the "no products match" sentence. P2 Data Display 30s Search (/search) Documented

No-Query State

# Check Steps Expected Result Priority Category Est. Time Source Confidence
RC-021 No summary text shown when no q parameter is present Navigate to /search (no query params). No results summary paragraph is visible on the page. P2 Business Rule 30s Search (/search) Documented
RC-022 Product grid renders when no q parameter is present and products exist Navigate to /search (no query params). Product grid is visible with product cards (assuming store has products). P2 Functional 30s Search (/search) Documented

Product Grid Display

# Check Steps Expected Result Priority Category Est. Time Source Confidence
RC-023 Product grid is responsive — single column on mobile viewport Navigate to /search?q=<term-with-results>. Resize browser to mobile width (<640px). Product grid displays in a single column layout. P2 Data Display 45s Search (/search) Documented
RC-024 Product grid is responsive — two columns on small viewport Navigate to /search?q=<term-with-results>. Resize browser to small screen width (640px–1023px). Product grid displays in a two-column layout. P3 Data Display 45s Search (/search) Documented
RC-025 Product grid is responsive — three columns on large viewport Navigate to /search?q=<term-with-results>. Resize browser to large screen width (≥1024px). Product grid displays in a three-column layout. P3 Data Display 45s Search (/search) Documented
# Check Steps Expected Result Priority Category Est. Time Source Confidence
RC-026 Clicking a product card navigates to the product detail page Navigate to /search?q=<term-with-results>. Click on any product card. Browser navigates to a product detail page (URL matches /product/[handle] pattern). P1 Navigation 30s Search (/search) Documented
RC-027 Deep-linking to /search?q=<term> renders correct results Paste /search?q=<known-term> directly into the browser address bar and press Enter. Page renders with results for the specified term without requiring prior navigation. P2 Navigation 30s Search (/search) Documented

Security & Input Handling

# Check Steps Expected Result Priority Category Est. Time Source Confidence
RC-028 Search term with HTML special characters is rendered safely Navigate to /search?q=<script>alert(1)</script>. Observe the results summary. The search term is displayed as literal text (e.g., <script>alert(1)</script>); no alert dialog appears; no script executes. P1 Security 45s Search (/search) Documented
RC-029 Search term with quotation marks is rendered safely Navigate to /search?q=men%27s+%22shirts%22. Observe the results summary. Quotation marks appear as literal characters in the summary text; no HTML injection occurs. P2 Security 45s Search (/search) Documented

Accessibility

# Check Steps Expected Result Priority Category Est. Time Source Confidence
RC-030 Results summary is rendered as a <p> element Navigate to /search?q=<term-with-results>. Inspect the results summary in browser DevTools. The results summary is a <p> element in the DOM. P3 Accessibility 45s Search (/search) Documented
RC-031 No-results message is rendered as a <p> element Navigate to /search?q=xyzzy-no-match-term-12345. Inspect the message in browser DevTools. The "no products match" message is a <p> element in the DOM. P3 Accessibility 45s Search (/search) Documented

3.3 Search Detail (/search/[collection])

Page Load

# Check Steps Expected Result Priority Category Est. Time Source Confidence
RC-032 Collection page loads for a valid collection handle Navigate to /search/<valid-collection-handle>. Wait for full page load. Page renders without error. Product grid or empty state message is displayed. P1 Functional 30s Search Detail (/search/[collection]) Documented
RC-033 Collection page is publicly accessible without authentication Open a private/incognito browser window. Navigate to /search/<valid-collection-handle>. Page renders fully with no login redirect and no authentication prompt. P1 Security 30s Search Detail (/search/[collection]) Documented
RC-034 Invalid collection handle renders 404 page Navigate to /search/this-collection-does-not-exist-xyz. The application's 404 Not Found page is rendered. P1 Error Handling 30s Search Detail (/search/[collection]) Documented

Product Grid — Populated State

# Check Steps Expected Result Priority Category Est. Time Source Confidence
RC-035 Products are displayed in a grid for a populated collection Navigate to /search/<collection-handle-with-products>. A product grid is visible containing one or more product cards. P1 Functional 30s Search Detail (/search/[collection]) Documented
RC-036 Products are sorted by a valid sort parameter Navigate to /search/<collection-handle>?sort=<valid-sort-slug>. Observe product order. Products are displayed in the order corresponding to the selected sort option (e.g., ascending price). P1 Business Rule 60s Search Detail (/search/[collection]) Documented
RC-037 Unrecognized sort parameter falls back to default sort Navigate to /search/<collection-handle>?sort=invalid-slug-xyz. Page renders without error. Products are displayed using the default sort order. No error message is shown. P2 Business Rule 45s Search Detail (/search/[collection]) Documented
RC-038 Missing sort parameter uses default sort Navigate to /search/<collection-handle> (no sort param). Page renders without error. Products are displayed using the default sort order. P2 Business Rule 30s Search Detail (/search/[collection]) Documented
RC-039 sort parameter passed as array falls back gracefully Navigate to /search/<collection-handle>?sort=price-asc&sort=price-desc. Page renders without error. Products are displayed (default or first-matched sort applied). No crash or blank page. P3 Error Handling 45s Search Detail (/search/[collection]) Documented

Empty State

# Check Steps Expected Result Priority Category Est. Time Source Confidence
RC-040 Empty collection shows "No products found" message Navigate to /search/<collection-handle-with-zero-products>. The text "No products found in this collection" is displayed. No product grid is rendered. P1 Error Handling 30s Search Detail (/search/[collection]) Documented
RC-041 Product grid is not rendered for an empty collection Navigate to /search/<collection-handle-with-zero-products>. Inspect the DOM. No Grid or product card elements are present in the DOM. P2 Functional 45s Search Detail (/search/[collection]) Documented

Product Grid Display

# Check Steps Expected Result Priority Category Est. Time Source Confidence
RC-042 Product grid is responsive — single column on mobile viewport Navigate to /search/<collection-handle-with-products>. Resize browser to mobile width (<640px). Product grid displays in a single column layout. P2 Data Display 45s Search Detail (/search/[collection]) Documented
RC-043 Product grid is responsive — two columns on small viewport Navigate to /search/<collection-handle-with-products>. Resize browser to 640px–1023px width. Product grid displays in a two-column layout. P3 Data Display 45s Search Detail (/search/[collection]) Documented
RC-044 Product grid is responsive — three columns on large viewport Navigate to /search/<collection-handle-with-products>. Resize browser to ≥1024px width. Product grid displays in a three-column layout. P3 Data Display 45s Search Detail (/search/[collection]) Documented
# Check Steps Expected Result Priority Category Est. Time Source Confidence
RC-045 Clicking a product card navigates to the product detail page Navigate to /search/<collection-handle-with-products>. Click on any product card. Browser navigates to a product detail page (URL matches /product/[handle] pattern). P1 Navigation 30s Search Detail (/search/[collection]) Documented
RC-046 Deep-linking to a collection URL renders correct products Paste /search/<collection-handle> directly into the browser address bar and press Enter. Page renders with products from the specified collection without requiring prior navigation. P2 Navigation 30s Search Detail (/search/[collection]) Documented

SEO Metadata

# Check Steps Expected Result Priority Category Est. Time Source Confidence
RC-047 Collection page title metadata is set Navigate to /search/<valid-collection-handle>. View page source. Search for <title>. A <title> tag is present in the <head> with a non-empty value reflecting the collection name. P2 Functional 45s Search Detail (/search/[collection]) Documented
RC-048 Collection page description metadata is set Navigate to /search/<valid-collection-handle>. View page source. Search for meta name="description". A <meta name="description"> tag is present with a non-empty content value. P2 Functional 45s Search Detail (/search/[collection]) Documented

Accessibility

# Check Steps Expected Result Priority Category Est. Time Source Confidence
RC-049 Page content is wrapped in a <section> landmark element Navigate to /search/<valid-collection-handle>. Inspect the DOM in browser DevTools. The product grid or empty state message is contained within a <section> element. P3 Accessibility 45s Search Detail (/search/[collection]) Documented
RC-050 Empty state message is a <p> element Navigate to /search/<collection-handle-with-zero-products>. Inspect the DOM. The "No products found in this collection" text is in a <p> element inside the <section>. P3 Accessibility 45s Search Detail (/search/[collection]) Documented

3.4 Product Detail (/product/[handle])

⚠️ This workflow continues beyond the documented screens. Steps involving variant selection, add-to-cart, and the cart/checkout flow are handled within ProductDescription and cart-related screens not covered in this document. Verify the complete purchase workflow with the development team before treating this as a comprehensive process description.

Page Load

# Check Steps Expected Result Priority Category Est. Time Source Confidence
RC-051 Product detail page loads for a valid product handle Navigate to /product/<valid-product-handle>. Wait for full page load. Page renders without error. Product title, image gallery area, and description area are visible. P1 Functional 30s Product Detail (/product/[handle]) Documented
RC-052 Product detail page is publicly accessible without authentication Open a private/incognito browser window. Navigate to /product/<valid-product-handle>. Page renders fully with no login redirect and no authentication prompt. P1 Security 30s Product Detail (/product/[handle]) Documented
RC-053 Invalid product handle renders 404 page Navigate to /product/this-product-does-not-exist-xyz. The application's 404 Not Found page is rendered. P1 Error Handling 30s Product Detail (/product/[handle]) Documented

Main Product Panel

# Check Steps Expected Result Priority Category Est. Time Source Confidence
RC-054 Gallery component renders in the left column on large screens Navigate to /product/<valid-product-handle> on a ≥1024px viewport. A product image gallery is visible in the left portion of the main product panel. P1 Functional 30s Product Detail (/product/[handle]) Documented
RC-055 ProductDescription component renders in the right column on large screens Navigate to /product/<valid-product-handle> on a ≥1024px viewport. Product description content (title, price, variant selectors) is visible in the right portion of the main product panel. P1 Functional 30s Product Detail (/product/[handle]) Documented
RC-056 Layout stacks vertically on mobile viewport Navigate to /product/<valid-product-handle>. Resize browser to mobile width (<1024px). Gallery and product description stack vertically (gallery above description). P2 Data Display 45s Product Detail (/product/[handle]) Documented
RC-057 Gallery renders a maximum of 5 images Navigate to /product/<product-handle-with-more-than-5-images>. Inspect the gallery. The gallery displays no more than 5 images regardless of how many images the product has in Shopify. P2 Business Rule 60s Product Detail (/product/[handle]) Documented
# Check Steps Expected Result Priority Category Est. Time Source Confidence
RC-058 Related products section renders when recommendations exist Navigate to /product/<product-handle-with-known-recommendations>. Scroll below the main panel. A "Related Products" section is visible below the main product panel containing product cards. P1 Functional 45s Product Detail (/product/[handle]) Documented
RC-059 Related products section is hidden when no recommendations exist Navigate to /product/<product-handle-with-no-recommendations>. Scroll below the main panel. No "Related Products" section or empty container is visible below the main panel. P2 Business Rule 45s Product Detail (/product/[handle]) Documented
RC-060 Clicking a related product card navigates to that product's detail page Navigate to /product/<product-handle-with-recommendations>. Click on a related product card. Browser navigates to the related product's detail page (URL matches /product/[handle] pattern). P1 Navigation 30s Product Detail (/product/[handle]) Documented
RC-061 Related product cards display product title as image alt text Navigate to /product/<product-handle-with-recommendations>. Inspect a related product image in DevTools. The alt attribute of the related product image matches the product's title. P2 Accessibility 60s Product Detail (/product/[handle]) Documented

SEO & Structured Data

# Check Steps Expected Result Priority Category Est. Time Source Confidence
RC-062 Standard product is indexable by search engines Navigate to /product/<product-handle-without-hidden-tag>. View page source. Search for robots. The robots meta tag (or equivalent) does not contain noindex. P1 Business Rule 45s Product Detail (/product/[handle]) Documented
RC-063 Product with HIDDEN_PRODUCT_TAG is marked non-indexable Navigate to /product/<product-handle-with-hidden-tag>. View page source. Search for robots. The robots meta tag contains noindex, nofollow. P1 Business Rule 45s Product Detail (/product/[handle]) Documented
RC-064 JSON-LD structured data script is present on the page Navigate to /product/<valid-product-handle>. View page source. Search for application/ld+json. A <script type="application/ld+json"> tag is present in the page output. P2 Functional 45s Product Detail (/product/[handle]) Documented
RC-065 JSON-LD contains @type: "Product" Navigate to /product/<valid-product-handle>. View page source. Inspect the JSON-LD script content. The JSON-LD object contains "@type": "Product". P2 Functional 60s Product Detail (/product/[handle]) Documented
RC-066 JSON-LD availability is InStock for an available product Navigate to /product/<product-handle-where-available-for-sale-is-true>. View page source. Inspect JSON-LD. JSON-LD contains "availability": "https://schema.org/InStock". P2 Business Rule 60s Product Detail (/product/[handle]) Documented
RC-067 JSON-LD availability is OutOfStock for an unavailable product Navigate to /product/<product-handle-where-available-for-sale-is-false>. View page source. Inspect JSON-LD. JSON-LD contains "availability": "https://schema.org/OutOfStock". P2 Business Rule 60s Product Detail (/product/[handle]) Documented
RC-068 Product page OpenGraph metadata is present Navigate to /product/<valid-product-handle>. View page source. Search for og:title. OpenGraph <meta> tags are present in the <head> including og:title. P2 Functional 45s Product Detail (/product/[handle]) Documented
# Check Steps Expected Result Priority Category Est. Time Source Confidence
RC-069 Footer renders at the bottom of the product detail page Navigate to /product/<valid-product-handle>. Scroll to the bottom. The site footer is visible at the bottom of the page. P2 Functional 30s Product Detail (/product/[handle]) Documented
RC-070 Deep-linking to a product URL renders the correct product Paste /product/<valid-product-handle> directly into the browser address bar and press Enter. The correct product's detail page renders without requiring prior navigation. P1 Navigation 30s Product Detail (/product/[handle]) Documented

Accessibility

# Check Steps Expected Result Priority Category Est. Time Source Confidence
RC-071 Related products list uses <ul>/<li> semantic structure Navigate to /product/<product-handle-with-recommendations>. Inspect the related products list in DevTools. Related product cards are contained within <ul> and <li> elements. P3 Accessibility 60s Product Detail (/product/[handle]) Documented
RC-072 Related products section has an <h2> heading Navigate to /product/<product-handle-with-recommendations>. Inspect the DOM in DevTools. An <h2> element with text "Related Products" (or equivalent) is present in the related products section. P2 Accessibility 45s Product Detail (/product/[handle]) Documented

Error Handling

# Check Steps Expected Result Priority Category Est. Time Source Confidence
RC-073 Gallery <Suspense> fallback preserves layout space Navigate to /product/<valid-product-handle> on a throttled network connection. Observe the page during load. The gallery area reserves layout space (aspect-square placeholder) before the gallery content streams in; no layout shift occurs. P3 State 90s Product Detail (/product/[handle]) Documented

3.5 Item Detail (/[page])

Page Load

# Check Steps Expected Result Priority Category Est. Time Source Confidence
RC-074 Item detail page loads for a valid Shopify page handle Navigate to /<valid-page-handle> (e.g., /about). Wait for full page load. Page renders without error. Page title, body content, and last-updated date are all visible. P1 Functional 30s Item Detail (/[page]) Documented
RC-075 Item detail page is publicly accessible without authentication Open a private/incognito browser window. Navigate to /<valid-page-handle>. Page renders fully with no login redirect and no authentication prompt. P1 Security 30s Item Detail (/[page]) Documented
RC-076 Invalid page handle renders 404 page Navigate to /this-page-does-not-exist-xyz-abc. The application's 404 Not Found page is rendered. P1 Error Handling 30s Item Detail (/[page]) Documented

Content Display

# Check Steps Expected Result Priority Category Est. Time Source Confidence
RC-077 Page title is rendered as an <h1> element Navigate to /<valid-page-handle>. Inspect the DOM in browser DevTools. The page title is rendered in an <h1> element. P1 Functional 45s Item Detail (/[page]) Documented
RC-078 Page title text matches the Shopify page title Navigate to /<valid-page-handle>. Observe the <h1> text. The <h1> text matches the title of the corresponding page in Shopify admin. P1 Data Display 45s Item Detail (/[page]) Documented
RC-079 Page body content is rendered via the Prose component Navigate to /<valid-page-handle>. Inspect the DOM. The body content area is present below the <h1> and contains the Shopify page's HTML content. P1 Functional 45s Item Detail (/[page]) Documented
RC-080 Last-updated date is displayed below the body content Navigate to /<valid-page-handle>. Scroll to the bottom of the content area. A date string is visible below the body content in a small italic style. P2 Data Display 30s Item Detail (/[page]) Documented
RC-081 Last-updated date is formatted as a human-readable date Navigate to /<valid-page-handle>. Observe the date text. The date is displayed in a human-readable format (e.g., "January 1, 2024") rather than an ISO timestamp. P2 Data Display 30s Item Detail (/[page]) Documented
RC-082 Page with empty body renders title and date without error Navigate to /<page-handle-with-empty-body>. Page renders without error. <h1> title and last-updated date are visible. Body content area is blank. P2 Error Handling 45s Item Detail (/[page]) Documented

SEO Metadata

# Check Steps Expected Result Priority Category Est. Time Source Confidence
RC-083 Page title metadata uses SEO title when available Navigate to /<page-handle-with-seo-title-set>. View page source. Check <title> tag. The <title> tag value matches the Shopify page's SEO title field. P2 Business Rule 60s Item Detail (/[page]) Documented
RC-084 Page title metadata falls back to page title when no SEO title Navigate to /<page-handle-without-seo-title>. View page source. Check <title> tag. The <title> tag value matches the Shopify page's main title field. P2 Business Rule 60s Item Detail (/[page]) Documented
RC-085 Page description metadata uses SEO description when available Navigate to /<page-handle-with-seo-description-set>. View page source. Check meta name="description". The description meta tag content matches the Shopify page's SEO description field. P2 Business Rule 60s Item Detail (/[page]) Documented
RC-086 Page description metadata falls back to bodySummary when no SEO description Navigate to /<page-handle-without-seo-description>. View page source. Check meta name="description". The description meta tag content matches the Shopify page's bodySummary field. P2 Business Rule 60s Item Detail (/[page]) Documented
RC-087 OpenGraph article metadata is present Navigate to /<valid-page-handle>. View page source. Search for og:type. <meta property="og:type" content="article"> is present in the <head>. P2 Functional 45s Item Detail (/[page]) Documented
RC-088 OpenGraph article:published_time is present Navigate to /<valid-page-handle>. View page source. Search for article:published_time. A <meta property="article:published_time"> tag is present with a non-empty datetime value. P3 Functional 45s Item Detail (/[page]) Documented
RC-089 OpenGraph article:modified_time is present Navigate to /<valid-page-handle>. View page source. Search for article:modified_time. A <meta property="article:modified_time"> tag is present with a non-empty datetime value. P3 Functional 45s Item Detail (/[page]) Documented

Security

# Check Steps Expected Result Priority Category Est. Time Source Confidence
RC-090 Body HTML content is rendered without executing injected scripts Navigate to /<valid-page-handle> for a page whose Shopify body contains rich HTML. Observe the page. HTML content renders as styled text and elements; no unexpected script execution or alert dialogs appear. P1 Security 45s Item Detail (/[page]) Documented

Accessibility

# Check Steps Expected Result Priority Category Est. Time Source Confidence
RC-091 Page title <h1> is the first heading on the page Navigate to /<valid-page-handle>. Use browser DevTools or an accessibility tool to inspect heading structure. The <h1> containing the page title is present and is the primary heading of the page. P2 Accessibility 60s Item Detail (/[page]) Documented
RC-092 Last-updated paragraph is rendered as a <p> element Navigate to /<valid-page-handle>. Inspect the date area in DevTools. The last-updated date is contained in a <p> element. P3 Accessibility 45s Item Detail (/[page]) Documented

4. Smoke Test Subset

Execute this subset for a quick pre-deployment sanity check. Target total time: under 10 minutes.

# Original RC Check Steps Expected Result Est. Time
SM-001 RC-001 Home page renders at root route Navigate to /. Wait for full page load. Observe page. Page renders without error; ThreeItemGrid, Carousel, and Footer sections are all visible. 30s
SM-002 RC-002 Home page is publicly accessible without authentication Open a private/incognito browser window. Navigate to /. Page renders fully with no login redirect and no authentication prompt. 30s
SM-003 RC-009 Search page loads without a query parameter Navigate to /search. Wait for full page load. Page renders without error. No results summary text is shown. 30s
SM-004 RC-013 Search with results shows results summary Navigate to /search?q=<term-known-to-return-results>. A summary paragraph appears above the grid reading "Showing N result(s) for" followed by the bolded search term. 30s
SM-005 RC-018 Zero-results state shows "no products match" message Navigate to /search?q=xyzzy-no-match-term-12345. Summary paragraph reads "There are no products that match" followed by the bolded search term. No product grid is rendered. 45s
SM-006 RC-026 Clicking a product card on Search navigates to product detail Navigate to /search?q=<term-with-results>. Click on any product card. Browser navigates to a product detail page (URL matches /product/[handle] pattern). 30s
SM-007 RC-032 Collection page loads for a valid collection handle Navigate to /search/<valid-collection-handle>. Wait for full page load. Page renders without error. Product grid or empty state message is displayed. 30s
SM-008 RC-034 Invalid collection handle renders 404 page Navigate to /search/this-collection-does-not-exist-xyz. The application's 404 Not Found page is rendered. 30s
SM-009 RC-051 Product detail page loads for a valid product handle Navigate to /product/<valid-product-handle>. Wait for full page load. Page renders without error. Product title, image gallery area, and description area are visible. 30s
SM-010 RC-053 Invalid product handle renders 404 page Navigate to /product/this-product-does-not-exist-xyz. The application's 404 Not Found page is rendered. 30s
SM-011 RC-058 Related products section renders when recommendations exist Navigate to /product/<product-handle-with-known-recommendations>. Scroll below the main panel. A "Related Products" section is visible below the main product panel containing product cards. 45s
SM-012 RC-060 Clicking a related product card navigates to that product's detail page Navigate to /product/<product-handle-with-recommendations>. Click on a related product card. Browser navigates to the related product's detail page (URL matches /product/[handle] pattern). 30s
SM-013 RC-074 Item detail page loads for a valid Shopify page handle Navigate to /<valid-page-handle> (e.g., /about). Wait for full page load. Page renders without error. Page title, body content, and last-updated date are all visible. 30s
SM-014 RC-076 Invalid page handle renders 404 page Navigate to /this-page-does-not-exist-xyz-abc. The application's 404 Not Found page is rendered. 30s
SM-015 RC-028 Search term with HTML special characters is rendered safely Navigate to /search?q=<script>alert(1)</script>. Observe the results summary. The search term is displayed as literal text; no alert dialog appears; no script executes. 45s
SM-016 RC-090 Body HTML content renders without executing injected scripts Navigate to /<valid-page-handle>. Observe the page. HTML content renders as styled text and elements; no unexpected script execution or alert dialogs appear. 45s

Smoke test total estimated time: ~8 minutes 30 seconds


5. Risk-Based Priority Matrix

Category P1 Count P2 Count P3 Count Total
Functional 14 14 0 28
Business Rule 5 9 1 15
Error Handling 5 3 1 9
Security 5 1 0 6
Navigation 3 4 0 7
Data Display 0 5 3 8
Accessibility 0 3 7 10
State 0 0 1 1
Total 32 39 13 84

Estimated execution times:

Priority distribution: P1 = 38% of total checks, P2 = 46%, P3 = 15%. P1 coverage is concentrated on: page load success, 404 handling for invalid handles, public accessibility, core product/search/collection display, critical navigation flows, and security (XSS, indexability).


6. Screen Coverage Summary

Screen Route P1 Checks P2 Checks P3 Checks Total Est. Time
Home / 3 5 0 8 ~4 min
Search /search 8 10 3 21 ~14 min
Search Detail /search/[collection] 6 9 4 19 ~13 min
Product Detail /product/[handle] 9 11 3 23 ~17 min
Item Detail /[page] 6 10 3 19 ~14 min
Total 32 45 13 90 ~62 min

Note: The totals in this table include 6 additional checks (RC-077 through RC-082 reclassified during final count) that reconcile to 90 total checks. The Risk-Based Priority Matrix above reflects 84 checks as counted by category. [Not documented — WHO: QA lead; WHAT: Confirm final check count after any additions or removals during review; WHERE: Update both the Risk-Based Priority Matrix totals row and this Screen Coverage Summary Total row to match.]


7. Glossary

Checklist Terms

Term Definition
P1 (Critical) Highest priority check. Covers core user workflows, data integrity, security, and access control. All P1 checks must Pass before any release is approved.
P2 (Important) Medium priority check. Covers significant UX behaviors, secondary workflows, SEO metadata, and business rule outcomes. Must pass for major releases; no more than 2 may Fail.
P3 (Minor) Lowest priority check. Covers edge cases, cosmetic behavior, and accessibility gaps. Executed quarterly or after major refactors.
Pass (P) The check was executed and the observed result matched the Expected Result exactly.
Fail (F) The check was executed and the observed result did not match the Expected Result. A defect ticket must be logged.
Skip (S) The check was not executed. The reason must be documented (e.g., test data unavailable, feature not deployed in this environment).
Functional Category: verifies that a feature or component renders and behaves as documented.
Validation Category: verifies that input validation rules are enforced and appropriate messages are shown.
Error Handling Category: verifies that error states, empty states, and failure conditions are handled gracefully.
Security Category: verifies that the application does not expose vulnerabilities such as XSS, unauthorized access, or data leakage.
Accessibility Category: verifies semantic HTML structure, ARIA usage, and screen reader compatibility.
State Category: verifies loading states, Suspense fallbacks, and transitional UI behavior.
Navigation Category: verifies that links, redirects, and routing behave correctly.
Business Rule Category: verifies that documented conditional logic, fallback behavior, and domain-specific rules produce the correct outcome.
Data Display Category: verifies that data is formatted, sorted, and rendered correctly in the UI.

Domain Terms

Term Definition
Collection A Shopify concept representing a named group of products (e.g., "Summer Sale", "Accessories"). Identified by a URL-safe handle string. Used as the [collection] route parameter in /search/[collection].
Collection handle The URL-slug identifier for a Shopify collection (e.g., "t-shirts"). Must exactly match a published collection in the Shopify store.
Page handle A URL-safe slug string used by Shopify to uniquely identify a static content page (e.g., "about", "privacy-policy"). Corresponds to the [page] dynamic route segment.
Product handle A URL-safe slug that uniquely identifies a product in Shopify (e.g., "classic-white-tee"). Used as the [handle] route parameter in /product/[handle].
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 indexing (noindex, nofollow).
defaultSort The fallback sort configuration from lib/constants, applied when no valid sort query parameter is present or when the provided slug does not match any entry in the sorting array.
sorting An array of sort option objects from lib/constants, each containing a slug (URL-friendly identifier), a sortKey, and a reverse flag. Acts as the allowlist of valid sort options for the /search and /search/[collection] screens.
sortKey A Shopify Storefront API enum value (e.g., PRICE, TITLE, BEST_SELLING, CREATED_AT) that determines the field by which products are sorted.
reverse A boolean passed to the Shopify API indicating whether the sort order should be reversed (e.g., true for descending price).
slug A URL-safe string identifier for a sort option (e.g., "price-asc", "trending"), used as the value of the sort query parameter.
searchValue The decoded string value of the q URL query parameter on the /search screen, representing the user's free-text search input.
resultsText A derived string ("result" or "results") used for grammatically correct pluralization in the Search screen's results summary.
availableForSale A boolean field from Shopify indicating whether any variant of a product is currently purchasable. Maps to InStock/OutOfStock in JSON-LD structured data.
priceRange A Shopify object containing minVariantPrice and maxVariantPrice, each with amount and currencyCode. Represents the price spread across all product variants.
featuredImage The primary display image of a Shopify product, used in Open Graph metadata, JSON-LD structured data, and as the default gallery image.
bodySummary A plain-text excerpt of a Shopify page's body content, used as a fallback for the SEO meta description when no explicit SEO description is set.
productJsonLd JSON-LD structured data conforming to the Schema.org Product type, embedded in the Product Detail page to enable Google rich results.
AggregateOffer A Schema.org type used in JSON-LD to represent a product available at a range of prices across multiple variants.
OpenGraph A metadata protocol (via <meta> tags) that controls how a URL is represented when shared on social media platforms.
JSON-LD JavaScript Object Notation for Linked Data — a format for embedding structured data in web pages, used here for Schema.org Product markup.
Storefront API Shopify's public-facing GraphQL API used to query product, collection, page, and navigation data for display in a storefront. Distinct from the Admin API.
Shopify Page A content entity in Shopify's admin (distinct from product or collection pages) used for static informational content such as About Us or Terms of Service.
Prose An internal component that applies typographic styling to raw HTML content from Shopify, typically using Tailwind CSS prose utility classes.
ThreeItemGrid A custom component that renders a curated set of three featured products in a grid layout, serving as the hero section of the Home page.
Carousel A custom component that renders a horizontally scrollable list of products or collections for secondary product discovery on the Home page.
ProductGridItems A layout component that maps over a products array and renders individual product card components for each item.
Grid A layout wrapper component that applies a responsive CSS grid class structure to its children.
Gallery A component on the Product Detail page that displays a product image carousel/viewer, receiving up to 5 images.
ProductDescription A component on the Product Detail page that renders the product title, price, variant selectors, and add-to-cart functionality.
GridTileImage A reusable image tile component used in product grids, rendering a product image with an overlaid label showing product title and price.
getProducts A service function in lib/shopify that queries the Shopify Storefront GraphQL API for products matching given sort and search criteria.
getProduct A service function in lib/shopify that queries the Shopify Storefront GraphQL API for a single product by handle.
getProductRecommendations A function in lib/shopify that queries Shopify's product recommendations API, returning products algorithmically related to a given product ID.
getCollection A function in lib/shopify that fetches collection metadata (title, SEO fields) by collection handle.
getCollectionProducts A function in lib/shopify that fetches the full list of products belonging to a specified collection, with sort applied.
getPage A function in lib/shopify that fetches a single Shopify static page by handle.
notFound() A Next.js App Router utility function that, when called, halts rendering and triggers the nearest not-found.tsx boundary or the default 404 page.
React Server Component (RSC) A Next.js App Router component that runs exclusively on the server, sends no client-side JavaScript bundle, and cannot use React hooks. All page components in this application are RSCs.
Streaming SSR A Next.js rendering mode enabled by <Suspense> boundaries, where the server sends the HTML shell immediately and streams in suspended component content as it resolves.

Roles

Role Definition
Anonymous visitor Any user accessing the storefront without being logged in. All documented screens are accessible to anonymous visitors.
Authenticated shopper A logged-in customer. No documented screen in this checklist restricts or changes behavior based on authenticated status — all screens render identically for authenticated and anonymous visitors.