Skip to content
All projects

Lawak Store

A demo shop with an admin panel, covered by 50 test cases.

Shows the full QA flow on one product: test case, automated run, evidence, and report. The shop runs in the browser with a mock backend, so the suite never touches a production system.

Lawak Store screenshotRun it live

What it covers

  • 50 cases: 41 Playwright UI cases and 9 Bruno CLI API cases
  • Smoke, Regression, and Full Cycle suites by phase, sprint, and module
  • Each run makes a Word evidence document with a screenshot per step and updates the Excel test cases
  • A test dashboard shows every run, and the QA Lab on this site runs the UI suite live

Tech stack

PlaywrightBruno CLIPythonGitHub ActionsCloudflare Workers

QA case study

Test strategy

One JSON file is the single source of every test case: phases, sprints, modules, suites, steps, and expected results. The Playwright scripts, the Excel workbook, and the dashboard tags all come from it. There is one test per case ID and one step per case step, and every UI step keeps a screenshot as evidence. Every run starts from the seed data, and tests make their own data with the prefix qa-auto.

What I automated, and why

  • Storefront: sign in, catalog, cart, checkout, orders

    Phase 1 is the path every customer takes. A break here stops every sale.

  • Admin panel: products, orders, users, dashboard

    Phase 2 holds the rules that protect data: roles, the order status flow, and stock.

  • API rules with Bruno CLI

    The same business rules are checked under the UI: wrong password, out of stock, declined card, invalid order transition, and admin access.

What I deliberately did not automate

  • Real payments

    The shop uses mock cards only. There is no real payment provider to test.

  • Production systems

    Only the local demo server is a target. The suite never points at a production system.

Known defect

  • DEF-001 (planted on purpose): Checkout accepts a 4-digit postal code, but rule R-07 needs exactly 5 digits. TC-CHK-006 fails until the rule is fixed. The defect shows how a failure moves through the evidence document, the workbook, and the dashboard.

Latest run · 2026-10-12 · local run

lawak-store / regression

40/41 passedDuration 48.8s
  • TC-AUTH-001Sign in with the demo admin account0.8s
  • TC-AUTH-002Wrong password shows an error0.7s
  • TC-AUTH-003Invalid email format is rejected0.8s
  • TC-AUTH-004Disabled account cannot sign in0.7s
  • TC-AUTH-005Register a new customer account1.1s
  • TC-AUTH-006Register with an existing email is rejected0.9s
  • TC-AUTH-007Weak password is rejected1.0s
  • TC-AUTH-008Sign out ends the session1.2s
  • TC-AUTH-009A protected page asks for sign in, then returns to it0.8s
  • TC-CAT-001Shop lists all active products and hides drafts0.8s
  • TC-CAT-002Search finds a product by name0.7s
  • TC-CAT-003Category filter shows only that category0.7s
  • TC-CAT-004Sort by price from low to high0.8s
  • TC-CAT-005Search with no result shows an empty state0.6s
  • TC-CAT-006Product detail shows the price and stock0.7s
  • TC-CAT-007Out-of-stock product cannot be added to the cart0.7s
  • TC-CART-001Add a product to the cart0.9s
  • TC-CART-002Changing the quantity updates the totals0.9s
  • TC-CART-003Shipping is free from Rp 300.0000.7s
  • TC-CART-004Removing the last item shows an empty cart0.8s
  • TC-CART-005Quantity limit of 10 is enforced0.9s
  • TC-CHK-001Checkout with the test card creates an order1.2s
  • TC-CHK-002Empty required fields are reported1.0s
  • TC-CHK-003Declined card shows a payment error1.2s
  • TC-CHK-004Invalid card number is rejected1.2s
  • TC-CHK-005Expired card is rejected1.3s
  • TC-CHK-006Postal code must have exactly 5 digits8.6s
  • TC-ORD-001A new order shows in My orders2.0s
  • TC-ORD-002A customer cannot open another customer's order1.0s
  • TC-PRD-001Admin creates a product1.5s
  • TC-PRD-002Admin edits a product price1.0s
  • TC-PRD-003Admin deletes a product0.9s
  • TC-PRD-004Product form rejects invalid data1.1s
  • TC-PRD-005A draft product is hidden from the shop1.2s
  • TC-AOR-001A new customer order shows in admin Orders1.8s
  • TC-AOR-002Admin moves an order from Paid to Processing1.1s
  • TC-AOR-003Cancelling an order puts the stock back1.4s
  • TC-USR-001A customer cannot open admin pages1.0s
  • TC-USR-002A disabled customer cannot sign in1.4s
  • TC-USR-003Admin cannot change their own role or status0.8s
  • TC-DSH-001Admin dashboard shows the KPIs0.8s

One failure is expected: DEF-001 is planted on purpose, and TC-CHK-006 catches it.