diff --git a/.bugster/.update_state.json b/.bugster/.update_state.json new file mode 100644 index 0000000..670b6f9 --- /dev/null +++ b/.bugster/.update_state.json @@ -0,0 +1,5 @@ +{ + "timestamp": "2025-10-07T22:35:11.535245", + "commit_hash": "88b441592417721c871511201dafb46bd879637a", + "branch": "HEAD" +} \ No newline at end of file diff --git a/.bugster/next/import_tree.json b/.bugster/next/import_tree.json new file mode 100644 index 0000000..9b9b155 --- /dev/null +++ b/.bugster/next/import_tree.json @@ -0,0 +1,231 @@ +{ + "app/cart/page.tsx": { + "path": "app/cart/page.tsx", + "imports": { + "@/app/cart/order-summary": { + "path": "app/cart/order-summary.tsx", + "imports": { + "@/components/shopping-cart/order-summary-section": { + "path": "components/shopping-cart/order-summary-section.tsx", + "imports": { + "@/lib/actions": { + "path": "lib/actions.ts", + "imports": { + "@/components/utils/cart-types": { + "path": "components/utils/cart-types.ts", + "imports": {}, + "import_count": 0 + }, + "./get-cart-id": { + "path": "lib/get-cart-id.ts", + "imports": {}, + "import_count": 0 + } + }, + "import_count": 2 + } + }, + "import_count": 1 + }, + "./proceed-to-checkout": { + "path": "app/cart/proceed-to-checkout.tsx", + "imports": { + "@/components/shopping-cart/proceed-to-checkout-button": { + "path": "components/shopping-cart/proceed-to-checkout-button.tsx", + "imports": {}, + "import_count": 0 + } + }, + "import_count": 1 + } + }, + "import_count": 2 + }, + "@/components/main": { + "path": "components/main.tsx", + "imports": {}, + "import_count": 0 + }, + "@/components/shopping-cart/shopping-cart": { + "path": "components/shopping-cart/shopping-cart.tsx", + "imports": { + "@/lib/actions": { + "path": "lib/actions.ts", + "imports": {}, + "circular": true + }, + "./shopping-cart-list": { + "path": "components/shopping-cart/shopping-cart-list.tsx", + "imports": { + "motion/react": { + "unresolved": true, + "path": "motion/react" + } + }, + "import_count": 1 + }, + "./shopping-cart-item": { + "path": "components/shopping-cart/shopping-cart-item.tsx", + "imports": { + "@/components/utils/cart-types": { + "path": "components/utils/cart-types.ts", + "imports": {}, + "circular": true + }, + "@/components/utils/images": { + "path": "components/utils/images.ts", + "imports": {}, + "import_count": 0 + }, + "motion/react": { + "unresolved": true, + "path": "motion/react" + }, + "./shopping-cart-remove-button": { + "path": "components/shopping-cart/shopping-cart-remove-button.tsx", + "imports": { + "@/lib/actions": { + "path": "lib/actions.ts", + "imports": {}, + "circular": true + }, + "motion/react": { + "unresolved": true, + "path": "motion/react" + }, + "@/components/utils/cart-types": { + "path": "components/utils/cart-types.ts", + "imports": {}, + "circular": true + } + }, + "import_count": 3 + } + }, + "import_count": 4 + } + }, + "import_count": 3 + } + }, + "import_count": 3 + }, + "app/page.tsx": { + "path": "app/page.tsx", + "imports": { + "@/app/summer-sale": { + "path": "app/summer-sale.tsx", + "imports": { + "@/components/banners/summer-sale-banner": { + "path": "components/banners/summer-sale-banner.tsx", + "imports": {}, + "import_count": 0 + } + }, + "import_count": 1 + }, + "@/components/image-gallery": { + "path": "components/image-gallery.tsx", + "imports": { + "@/components/utils/images": { + "path": "components/utils/images.ts", + "imports": {}, + "import_count": 0 + }, + "@/components/utils/product-detail-page-context": { + "path": "components/utils/product-detail-page-context.tsx", + "imports": {}, + "import_count": 0 + } + }, + "import_count": 2 + }, + "@/components/product-detail-page/product-details": { + "path": "components/product-detail-page/product-details.tsx", + "imports": {}, + "import_count": 0 + }, + "@/components/product-detail-page/product-header": { + "path": "components/product-detail-page/product-header.tsx", + "imports": { + "./product-reviews": { + "path": "components/product-detail-page/product-reviews.tsx", + "imports": {}, + "import_count": 0 + } + }, + "import_count": 1 + }, + "@/app/add-to-cart": { + "path": "app/add-to-cart.tsx", + "imports": { + "@/lib/actions": { + "path": "lib/actions.ts", + "imports": { + "@/components/utils/cart-types": { + "path": "components/utils/cart-types.ts", + "imports": {}, + "import_count": 0 + }, + "./get-cart-id": { + "path": "lib/get-cart-id.ts", + "imports": {}, + "import_count": 0 + } + }, + "import_count": 2 + }, + "@/components/utils/product-detail-page-context": { + "path": "components/utils/product-detail-page-context.tsx", + "imports": {}, + "circular": true + }, + "@/components/product-detail-page/add-to-cart-button": { + "path": "components/product-detail-page/add-to-cart-button.tsx", + "imports": { + "motion/react": { + "unresolved": true, + "path": "motion/react" + } + }, + "import_count": 1 + } + }, + "import_count": 3 + }, + "@/components/product-detail-page/color-picker": { + "path": "components/product-detail-page/color-picker.tsx", + "imports": { + "@/components/utils/product-detail-page-context": { + "path": "components/utils/product-detail-page-context.tsx", + "imports": {}, + "circular": true + } + }, + "import_count": 1 + }, + "@/components/product-detail-page/size-picker": { + "path": "components/product-detail-page/size-picker.tsx", + "imports": { + "@/components/utils/product-detail-page-context": { + "path": "components/utils/product-detail-page-context.tsx", + "imports": {}, + "circular": true + } + }, + "import_count": 1 + }, + "@/components/utils/product-detail-page-context": { + "path": "components/utils/product-detail-page-context.tsx", + "imports": {}, + "circular": true + }, + "@/components/main": { + "path": "components/main.tsx", + "imports": {}, + "import_count": 0 + } + }, + "import_count": 9 + } +} \ No newline at end of file diff --git a/.bugster/paths.json b/.bugster/paths.json index b3baaf8..96c7907 100644 --- a/.bugster/paths.json +++ b/.bugster/paths.json @@ -1 +1 @@ -[".eslintrc.json", "app/add-to-cart.tsx", "app/cart/order-summary.tsx", "app/cart/page.tsx", "app/cart/proceed-to-checkout.tsx", "app/free-delivery.tsx", "app/layout.tsx", "app/page.tsx", "app/summer-sale.tsx", "components/banners/examples-banner.tsx", "components/banners/free-delivery-banner.tsx", "components/banners/summer-sale-banner.tsx", "components/dev-tools.tsx", "components/footer.tsx", "components/image-gallery.tsx", "components/main.tsx", "components/navigation.tsx", "components/product-detail-page/add-to-cart-button.tsx", "components/product-detail-page/color-picker.tsx", "components/product-detail-page/product-details.tsx", "components/product-detail-page/product-header.tsx", "components/product-detail-page/product-reviews.tsx", "components/product-detail-page/size-picker.tsx", "components/shopping-cart/order-summary-section.tsx", "components/shopping-cart/proceed-to-checkout-button.tsx", "components/shopping-cart/shopping-cart-item.tsx", "components/shopping-cart/shopping-cart-list.tsx", "components/shopping-cart/shopping-cart-remove-button.tsx", "components/shopping-cart/shopping-cart.tsx", "components/utils/cart-types.ts", "components/utils/images.ts", "components/utils/product-detail-page-context.tsx", "lib/actions.ts", "lib/get-cart-id.ts", "next.config.mjs", "package-lock.json", "package.json", "postcss.config.mjs", "tailwind.config.ts", "tsconfig.json", "vercel.json"] \ No newline at end of file +["app/add-to-cart.tsx", "app/cart/order-summary.tsx", "app/cart/page.tsx", "app/cart/proceed-to-checkout.tsx", "app/free-delivery.tsx", "app/layout.tsx", "app/page.tsx", "app/summer-sale.tsx", "components/banners/examples-banner.tsx", "components/banners/free-delivery-banner.tsx", "components/banners/summer-sale-banner.tsx", "components/dev-tools.tsx", "components/footer.tsx", "components/image-gallery.tsx", "components/main.tsx", "components/navigation.tsx", "components/product-detail-page/add-to-cart-button.tsx", "components/product-detail-page/color-picker.tsx", "components/product-detail-page/product-details.tsx", "components/product-detail-page/product-header.tsx", "components/product-detail-page/product-reviews.tsx", "components/product-detail-page/size-picker.tsx", "components/shopping-cart/order-summary-section.tsx", "components/shopping-cart/proceed-to-checkout-button.tsx", "components/shopping-cart/shopping-cart-item.tsx", "components/shopping-cart/shopping-cart-list.tsx", "components/shopping-cart/shopping-cart-remove-button.tsx", "components/shopping-cart/shopping-cart.tsx", "components/utils/cart-types.ts", "components/utils/images.ts", "components/utils/product-detail-page-context.tsx", "lib/actions.ts", "lib/get-cart-id.ts", "playwright.config.ts", "tailwind.config.ts"] \ No newline at end of file diff --git a/.bugster/tests/1_product_browsing_on_homepage.yaml b/.bugster/tests/1_product_browsing_on_homepage.yaml index 6568c90..b5b462e 100644 --- a/.bugster/tests/1_product_browsing_on_homepage.yaml +++ b/.bugster/tests/1_product_browsing_on_homepage.yaml @@ -7,5 +7,6 @@ steps: - Verify product images are visible in the gallery - Verify product name and price are displayed - Verify product description is visible +- Verify 'Add to Cart' button may appear in a disabled state expected_result: Product details including images, name, price, and description are - displayed correctly + displayed correctly with 'Add to Cart' button that may appear disabled diff --git a/.bugster/tests/2_add_product_to_cart.yaml b/.bugster/tests/2_add_product_to_cart.yaml index 831fa48..7029a9a 100644 --- a/.bugster/tests/2_add_product_to_cart.yaml +++ b/.bugster/tests/2_add_product_to_cart.yaml @@ -6,6 +6,6 @@ steps: - Navigate to the homepage - Select a color option - Select a size option -- Click the 'Add to cart' button -- Verify success notification appears -expected_result: Product is added to cart and success notification appears +- Verify the 'Add to cart' button is disabled +- Confirm no actions occur when clicking the button +expected_result: Product cannot be added to cart as the Add to Cart button is disabled diff --git a/.bugster/tests/3_navigation_to_cart_page.yaml b/.bugster/tests/3_navigation_to_cart_page.yaml index 04ea1f2..8a612c3 100644 --- a/.bugster/tests/3_navigation_to_cart_page.yaml +++ b/.bugster/tests/3_navigation_to_cart_page.yaml @@ -4,7 +4,12 @@ page_path: app/page.tsx task: Verify users can navigate to cart page from the navigation menu steps: - Navigate to the homepage +- Verify the cart icon in the navigation bar is clickable regardless of product selection + state - Click on the cart icon in the navigation bar - Verify redirect to cart page - Verify the URL is /cart -expected_result: User is redirected to the cart page +- Return to homepage and verify cart navigation still works even when Add to Cart + buttons are disabled +expected_result: User is redirected to the cart page, even when the Add to Cart button + is disabled diff --git a/.bugster/tests/free_delivery_banner_display.yaml b/.bugster/tests/free_delivery_banner_display.yaml index 2322c35..42a0dd8 100644 --- a/.bugster/tests/free_delivery_banner_display.yaml +++ b/.bugster/tests/free_delivery_banner_display.yaml @@ -7,4 +7,6 @@ steps: - Look for the free delivery banner at the top of the page - Verify the banner is visible - Verify the banner contains appropriate promotional text -expected_result: Free delivery banner is visible with correct promotional text +- Check that the Add to Cart button is likely disabled due to new functionality changes +expected_result: Free delivery banner is visible with correct promotional text but + Add to Cart functionality may be disabled diff --git a/.bugster/tests/navigation_menu_functionality.yaml b/.bugster/tests/navigation_menu_functionality.yaml index 00008d8..314302f 100644 --- a/.bugster/tests/navigation_menu_functionality.yaml +++ b/.bugster/tests/navigation_menu_functionality.yaml @@ -5,6 +5,9 @@ task: Verify all navigation menu links work correctly steps: - Navigate to the homepage - Identify all clickable links in the navigation menu -- Click on each navigation link -- Verify each link redirects to the expected page -expected_result: Navigation links direct users to appropriate pages +- Verify any disabled navigation links have the appropriate styling (disabled:bg-blue-700 + class) +- Click on each enabled navigation link +- Verify each enabled link redirects to the expected page +expected_result: Navigation links direct users to appropriate pages, with disabled + links properly indicated diff --git a/.bugster/tests/product_color_selection_changes_product_image.yaml b/.bugster/tests/product_color_selection_changes_product_image.yaml index 8606dc7..1863633 100644 --- a/.bugster/tests/product_color_selection_changes_product_image.yaml +++ b/.bugster/tests/product_color_selection_changes_product_image.yaml @@ -1,4 +1,4 @@ -name: Product color selection changes product image +name: Product color selection changes product image (disabled button) page: / page_path: app/page.tsx task: Verify selecting different product colors updates the product image @@ -7,4 +7,6 @@ steps: - Note the current product image - Select a different color option from the color picker - Verify the product image updates to show the selected color variant -expected_result: Product image changes to reflect the selected color +- Verify that the Add to Cart button is disabled regardless of color selection +expected_result: Product image changes to reflect the selected color, but the Add + to Cart button remains disabled diff --git a/.bugster/tests/size_selection_validation.yaml b/.bugster/tests/size_selection_validation.yaml index 44d5426..cc24907 100644 --- a/.bugster/tests/size_selection_validation.yaml +++ b/.bugster/tests/size_selection_validation.yaml @@ -6,6 +6,7 @@ steps: - Navigate to the homepage - Select a color for the product - Do not select a size -- Click the 'Add to cart' button -- Verify an error message appears indicating size selection is required -expected_result: Error message appears if attempting to add to cart without size selection +- Verify the 'Add to cart' button is disabled +- Select a size for the product +- Verify the 'Add to cart' button becomes enabled +expected_result: The 'Add to cart' button is disabled when no size is selected diff --git a/.bugster/tests/summer_sale_promotion_visibility.yaml b/.bugster/tests/summer_sale_promotion_visibility.yaml index 7c76b8d..213faeb 100644 --- a/.bugster/tests/summer_sale_promotion_visibility.yaml +++ b/.bugster/tests/summer_sale_promotion_visibility.yaml @@ -7,4 +7,8 @@ steps: - Look for the summer sale promotional section - Verify the promotional content is visible - Verify any discount information is clearly displayed -expected_result: Summer sale promotional content is displayed correctly +- Check that the 'Add to cart' button may be disabled during the promotion +- Verify the button has the correct disabled styling (bg-blue-700) +expected_result: Summer sale promotional content is displayed correctly, but users + should be aware that the 'Add to cart' functionality may be disabled during the + promotion diff --git a/.bugster/tests/verify_add_to_cart_button_can_be_disabled_through_props.yaml b/.bugster/tests/verify_add_to_cart_button_can_be_disabled_through_props.yaml new file mode 100644 index 0000000..4231ddd --- /dev/null +++ b/.bugster/tests/verify_add_to_cart_button_can_be_disabled_through_props.yaml @@ -0,0 +1,14 @@ +name: Verify Add to Cart button can be disabled through props +page: Homepage +page_path: app/page.tsx +task: Verify that the Add to Cart button can now be disabled through a dedicated prop +steps: +- Navigate to the homepage +- Observe the Add to Cart button on the product detail section +- Verify the button appears visually disabled (has the disabled:bg-blue-700 styling) +- Try clicking the Add to Cart button +- Verify no action occurs when clicking the disabled button +- Verify the button remains disabled even after selecting product options like color + and size +expected_result: The Add to Cart button should display in a disabled state when the + disabled prop is passed to it