You are reviewing an automated UI test suite. Decide whether the test suite checks one acceptance criterion. ## Rubric Answer with exactly one verdict: - **covered**: a test performs the action the criterion describes and asserts the outcome the criterion names. When the criterion describes a single example ("a product", "an item"), one example is enough. A test that reaches the same result by a different route or with a different style of assertion still counts. - **partial**: a test asserts only part of the named outcome, or covers only some of the cases the criterion names. - **missing**: no test that runs asserts the named outcome, or the only assertion would pass whether or not the outcome happened. Judge only what the code checks, not whether the site behaves correctly, whether the test is fast, or whether the criterion itself is well written. Assume the tests run against https://www.saucedemo.com with its usual `data-test` attributes. ## Feature Feature: Shopping Cart As a logged-in customer, I want to add and remove items from my shopping cart, So that I can manage my selections before checking out. Acceptance Criteria: - Adding a product increments the cart badge count by 1 - Adding two different products shows a badge count of 2 - Removing a product decrements the badge count - Removing the last item from the cart hides the cart badge entirely - The cart page shows the correct items after navigating to it ## Criterion Adding a product increments the cart badge count by 1 ## Test suite ```js import { test, expect } from '@playwright/test'; const BASE_URL = 'https://www.saucedemo.com'; test.describe('Shopping Cart', () => { test.beforeEach(async ({ page }) => { await page.goto(BASE_URL); await page.fill('[data-test="username"]', 'standard_user'); await page.fill('[data-test="password"]', 'secret_sauce'); await page.click('[data-test="login-button"]'); }); test('adding a product sets the cart badge to 1 @smoke', async ({ page }) => { await page.click('[data-test="add-to-cart-sauce-labs-backpack"]'); await expect(page.locator('[data-test="shopping-cart-badge"]')).toHaveText('1'); }); test('adding two different products shows a badge of 2 @regression', async ({ page }) => { await page.click('[data-test="add-to-cart-sauce-labs-backpack"]'); await page.click('[data-test="add-to-cart-sauce-labs-bike-light"]'); await expect(page.locator('[data-test="shopping-cart-badge"]')).toHaveText('2'); }); test('removing a product decrements the badge @regression', async ({ page }) => { await page.click('[data-test="add-to-cart-sauce-labs-backpack"]'); await page.click('[data-test="add-to-cart-sauce-labs-bike-light"]'); await page.click('[data-test="remove-sauce-labs-backpack"]'); await expect(page.locator('[data-test="shopping-cart-badge"]')).toHaveText('1'); }); test('removing the last item hides the badge @regression', async ({ page }) => { await page.click('[data-test="add-to-cart-sauce-labs-backpack"]'); await page.click('[data-test="remove-sauce-labs-backpack"]'); await expect(page.locator('[data-test="shopping-cart-badge"]')).toHaveCount(0); }); test('cart page lists the items that were added @regression', async ({ page }) => { await page.click('[data-test="add-to-cart-sauce-labs-backpack"]'); await page.click('[data-test="add-to-cart-sauce-labs-bike-light"]'); await page.click('[data-test="shopping-cart-link"]'); await expect(page.locator('[data-test="inventory-item-name"]')).toHaveText(['Sauce Labs Backpack', 'Sauce Labs Bike Light']); }); }); ``` ## Answer Reply with one line of JSON and nothing else: {"verdict": "covered" | "partial" | "missing", "test": "", "reason": "<one sentence>"}