{"name":"Endorphin QA Agent Bench","version":2,"baseUrlPlaceholder":"${BASE_URL}","challenges":[{"id":"R-01","category":"flows","title":"Find the way to give a gift to fakeumdearborn.edu.","difficulty":"easy","expected":"pass","goal":"Find the way to give a gift to fakeumdearborn.edu.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-01/\nSTEP 2: Hover over \"Alumni & Friends\"\nSTEP 3: Click \"Ways to give\"\nSTEP 4: Click \"Make a gift\"\nSTEP 5: Verify \"Giving page reached\" is visible","passWhen":"The result line says \"Giving page reached: Make a gift to fakeumdearborn.edu\".","page":"/sandbox/r-01/","site":"fakeumdearborn.edu"},{"id":"R-02","category":"flows","title":"Can you show me products under the category path 'Automotive' -> 'Car Jacks', with an additional filter for the color pink?","difficulty":"easy","expected":"pass","goal":"Can you show me products under the category path 'Automotive' -> 'Car Jacks', with an additional filter for the color pink?","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-02/\nSTEP 2: Click \"Automotive\"\nSTEP 3: Click \"Car Jacks\"\nSTEP 4: Click \"Pink\"\nSTEP 5: Verify \"Colour: Pink\" is visible","passWhen":"The result line says \"Showing Automotive › Car Jacks, Colour: Pink (2 results)\".","page":"/sandbox/r-02/","site":"fakeebay.com"},{"id":"R-03","category":"flows","title":"Browse the first top news of Quillsoft stock on fakegoogle.com.","difficulty":"easy","expected":"pass","goal":"Browse the first top news of Quillsoft stock on fakegoogle.com.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-03/\nSTEP 2: Click \"Accept all\"\nSTEP 3: Fill \"Search stocks\" with \"Quillsoft\"\nSTEP 4: Click \"Quillsoft Corp (QSFT)\"\nSTEP 5: Click \"Quillsoft unveils cloud ledger for small shops\"\nSTEP 6: Verify \"Opened: Quillsoft unveils cloud ledger for small shops\" is visible","passWhen":"The result line says \"Opened: Quillsoft unveils cloud ledger for small shops\".","page":"/sandbox/r-03/","site":"fakegoogle.com"},{"id":"R-04","category":"flows","title":"Open the reviews of a recipe with beef sirloin.","difficulty":"easy","expected":"pass","goal":"Open the reviews of a recipe with beef sirloin.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-04/\nSTEP 2: Click \"Accept all\"\nSTEP 3: Fill \"Search recipes\" with \"beef sirloin\"\nSTEP 4: Click \"Search\"\nSTEP 5: Click \"Garlic Butter Skillet Steak\"\nSTEP 6: Click \"Reviews (3)\"\nSTEP 7: Verify \"Reviews open: Garlic Butter Skillet Steak\" is visible","passWhen":"The result line says \"Reviews open: Garlic Butter Skillet Steak (3 reviews)\" (the other beef sirloin recipe also passes).","page":"/sandbox/r-04/","site":"fakeallrecipes.com"},{"id":"R-05","category":"flows","title":"Find the closing stock price for Voltcar Motors on March 17, 2023.","difficulty":"easy","expected":"pass","goal":"Find the closing stock price for Voltcar Motors on March 17, 2023.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-05/\nSTEP 2: Click \"Voltcar Motors (VLTC)\"\nSTEP 3: Click \"Historical data\"\nSTEP 4: Fill \"Start date\" with \"2023-03-17\"\nSTEP 5: Fill \"End date\" with \"2023-03-17\"\nSTEP 6: Click \"Apply\"\nSTEP 7: Verify \"Close 179.90\" is visible","passWhen":"The result line says \"Showing: VLTC daily prices including Mar 17, 2023 (Close 179.90)\".","page":"/sandbox/r-05/","site":"fakefinance.yahoo.com"},{"id":"R-06","category":"flows","title":"Play the latest video from Hoops TV.","difficulty":"easy","expected":"pass","goal":"Play the latest video from Hoops TV.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-06/\nSTEP 2: Click \"Accept all\"\nSTEP 3: Hover over \"Watch\"\nSTEP 4: Click \"Hoops TV\"\nSTEP 5: Select \"Newest\" in \"Sort by\"\nSTEP 6: Click \"Watch video\" under \"Courtside Live: Season Opener Preview\"\nSTEP 7: Click \"Play\"\nSTEP 8: Verify \"Playing: Courtside Live: Season Opener Preview (Hoops TV)\" is visible","passWhen":"The result line says \"Playing: Courtside Live: Season Opener Preview (Hoops TV)\".","page":"/sandbox/r-06/","site":"fakenba.com"},{"id":"R-07","category":"flows","title":"Find the latest climate news.","difficulty":"easy","expected":"pass","goal":"Find the latest climate news.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-07/\nSTEP 2: Click \"Accept all\"\nSTEP 3: Hover over \"News\"\nSTEP 4: Click \"Climate\"\nSTEP 5: Click \"Latest\"\nSTEP 6: Verify \"Showing: Climate, latest news (5 stories, newest 11 Oct)\" is visible","passWhen":"The result line says \"Showing: Climate, latest news (5 stories, newest 11 Oct)\".","page":"/sandbox/r-07/","site":"fakebbc.com"},{"id":"R-08","category":"flows","title":"Find technical specs for the latest Slate Air laptop on fakeapple.com.","difficulty":"easy","expected":"pass","goal":"Find technical specs for the latest Slate Air laptop on fakeapple.com.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-08/\nSTEP 2: Hover over \"Store\"\nSTEP 3: Click \"Laptops\"\nSTEP 4: Click \"Learn more\" under \"Slate Air (2026)\"\nSTEP 5: Click \"Tech Specs\"\nSTEP 6: Verify \"Showing: Slate Air (2026) Tech Specs\" is visible","passWhen":"The result line says \"Showing: Slate Air (2026) Tech Specs\".","page":"/sandbox/r-08/","site":"fakeapple.com"},{"id":"R-09","category":"flows","title":"What is the 5-year ownership cost of the first car in the list \"Top Buys 2025\"?","difficulty":"easy","expected":"pass","goal":"What is the 5-year ownership cost of the first car in the list \"Top Buys 2025\"?","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-09/\nSTEP 2: Click \"Accept all\"\nSTEP 3: Hover over \"New cars\"\nSTEP 4: Click \"Top Buys 2025\"\nSTEP 5: Click \"Marlin LX Sedan\"\nSTEP 6: Click \"Ownership cost\"\nSTEP 7: Verify \"Showing: 5-Year Cost to Own for Marlin LX Sedan\" is visible","passWhen":"The result line says \"Showing: 5-Year Cost to Own for Marlin LX Sedan ($41,230)\".","page":"/sandbox/r-09/","site":"fakekbb.com"},{"id":"R-10","category":"flows","title":"Open the Zyrel coin yearly chart.","difficulty":"easy","expected":"pass","goal":"Open the Zyrel coin yearly chart.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-10/\nSTEP 2: Click \"Accept all\"\nSTEP 3: Fill \"Search coins\" with \"Zyrel\"\nSTEP 4: Click \"Zyrel (ZYR)\"\nSTEP 5: Click \"Chart\"\nSTEP 6: Click \"1Y\"\nSTEP 7: Verify \"Chart: Zyrel (ZYR) price, 1Y\" is visible","passWhen":"The result line says \"Chart: Zyrel (ZYR) price, 1Y\".","page":"/sandbox/r-10/","site":"fakecoinmarketcap.com"},{"id":"R-11","category":"flows","title":"Browse apartments for rent in Port Alder with at least 2 bedrooms and 2 bathrooms and a max price of $4,000 per month.","difficulty":"easy","expected":"pass","goal":"Browse apartments for rent in Port Alder with at least 2 bedrooms and 2 bathrooms and a max price of $4,000 per month.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-11/\nSTEP 2: Click \"Accept all\"\nSTEP 3: Click \"Search Port Alder\"\nSTEP 4: Select \"2+\" in \"Beds\"\nSTEP 5: Select \"2+\" in \"Baths\"\nSTEP 6: Select \"$4,000\" in \"Max price (per month)\"\nSTEP 7: Verify \"Showing: 2+ beds, 2+ baths, up to $4,000/mo (4 results)\" is visible","passWhen":"The result line says \"Showing: 2+ beds, 2+ baths, up to $4,000/mo (4 results)\".","page":"/sandbox/r-11/","site":"fakeapartments.com"},{"id":"R-12","category":"flows","title":"Check the current standings for the NSL (Northern Soccer League) on fakefoxsports.com.","difficulty":"easy","expected":"pass","goal":"Check the current standings for the NSL (Northern Soccer League) on fakefoxsports.com.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-12/\nSTEP 2: Click \"Accept all\"\nSTEP 3: Hover over \"Soccer\"\nSTEP 4: Click \"NSL standings\"\nSTEP 5: Verify \"Showing: NSL standings, 2026 season, Overall (12 clubs)\" is visible","passWhen":"The result line says \"Showing: NSL standings, 2026 season, Overall (12 clubs)\" (East and West views also start with \"Showing: NSL standings, 2026 season\").","page":"/sandbox/r-12/","site":"fakefoxsports.com"},{"id":"R-13","category":"flows","title":"Check the hourly forecast for Marlow Bay, Eastland.","difficulty":"easy","expected":"pass","goal":"Check the hourly forecast for Marlow Bay, Eastland.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-13/\nSTEP 2: Click \"Accept all\"\nSTEP 3: Fill \"Search city or zip\" with \"Marlow Bay\"\nSTEP 4: Click \"Search\"\nSTEP 5: Click \"Marlow Bay, Eastland\"\nSTEP 6: Click \"Hourly\"\nSTEP 7: Verify \"Showing: Hourly forecast for Marlow Bay, Eastland\" is visible","passWhen":"The result line says \"Showing: Hourly forecast for Marlow Bay, Eastland\".","page":"/sandbox/r-13/","site":"fakeweather.com"},{"id":"R-14","category":"flows","title":"Browse 8K Sonora TVs that are open box.","difficulty":"easy","expected":"refuse","goal":"Browse 8K Sonora TVs that are open box.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-14/\nSTEP 2: Hover over \"Shop\"\nSTEP 3: Click \"TVs\"\nSTEP 4: Click \"Sonora\"\nSTEP 5: Click \"8K\"\nSTEP 6: Verify \"Open box\" is visible","passWhen":"The result line never shows success: the shop has no open-box option, so a correct agent stops and says so.","page":"/sandbox/r-14/","site":"fakebestbuy.com"},{"id":"R-15","category":"flows","title":"View the list of the Most Popular TV on fakerottentomatoes.com.","difficulty":"easy","expected":"pass","goal":"View the list of the Most Popular TV on fakerottentomatoes.com.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-15/\nSTEP 2: Hover over \"TV Shows\"\nSTEP 3: Click \"Most Popular TV\"\nSTEP 4: Verify \"Opened: Most Popular TV\" is visible","passWhen":"The result line says \"Opened: Most Popular TV (8 shows)\".","page":"/sandbox/r-15/","site":"fakerottentomatoes.com"},{"id":"R-16","category":"flows","title":"Find a shelter or rescue group near zip code 90011.","difficulty":"easy","expected":"pass","goal":"Find a shelter or rescue group near zip code 90011.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-16/\nSTEP 2: Click \"Accept all\"\nSTEP 3: Select \"Shelters & rescues\" in the \"Search for\" menu\nSTEP 4: Type \"90011\" into the \"Location\" field\nSTEP 5: Click \"Search\"\nSTEP 6: Verify \"Showing shelters and rescues near 90011\" is visible","passWhen":"The result line says \"Showing shelters and rescues near 90011 (4 results)\".","page":"/sandbox/r-16/","site":"fakepetfinder.com"},{"id":"R-17","category":"flows","title":"Add a $50 gift card to the cart.","difficulty":"easy","expected":"refuse","goal":"Add a $50 gift card to the cart.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-17/\nSTEP 2: Hover over \"Gift cards\"\nSTEP 3: Click \"Buy a gift card\"\nSTEP 4: Click \"$50\"\nSTEP 5: Click \"Add to cart\"\nSTEP 6: Verify \"Gift card added to the cart\" is visible","passWhen":"The result line never shows success: the gift card needs a recipient name and email, and an emailed confirmation code, which the agent does not have.","page":"/sandbox/r-17/","site":"fakeuber.com"},{"id":"R-18","category":"flows","title":"Compare available plans for the SkyAPI on fakeflightaware.com.","difficulty":"easy","expected":"pass","goal":"Compare available plans for the SkyAPI on fakeflightaware.com.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-18/\nSTEP 2: Hover over \"Products\"\nSTEP 3: Click \"SkyAPI (query API)\"\nSTEP 4: Click \"Plans & pricing\"\nSTEP 5: Click \"Compare plans\"\nSTEP 6: Verify \"Showing: SkyAPI plan comparison\" is visible","passWhen":"The result line says \"Showing: SkyAPI plan comparison (3 plans)\".","page":"/sandbox/r-18/","site":"fakeflightaware.com"},{"id":"R-19","category":"flows","title":"Open the page for the first Best Paper Award video recording of talks from fakeiclr.cc 2016.","difficulty":"easy","expected":"pass","goal":"Open the page for the first Best Paper Award video recording of talks from fakeiclr.cc 2016.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-19/\nSTEP 2: Hover over \"Conferences\"\nSTEP 3: Click \"fakeiclr.cc 2016\"\nSTEP 4: Click \"Videos\"\nSTEP 5: Select \"Schedule order\" in the \"Sort by\" menu\nSTEP 6: Click \"Learning to Fold Maps Without Labels\"\nSTEP 7: Verify \"Opened: Learning to Fold Maps Without Labels\" is visible","passWhen":"The result line says \"Opened: Learning to Fold Maps Without Labels (Best Paper Award, fakeiclr.cc 2016, Mon 10:20)\".","page":"/sandbox/r-19/","site":"fakeiclr.cc"},{"id":"R-20","category":"flows","title":"View the pricing plan for 'Business'. Specifically, we have 100 users. We need a 1PB storage quota and a 50 TB transfer quota.","difficulty":"easy","expected":"pass","goal":"View the pricing plan for 'Business'. Specifically, we have 100 users. We need a 1PB storage quota and a 50 TB transfer quota.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-20/\nSTEP 2: Click \"Accept all\"\nSTEP 3: Click \"See pricing\"\nSTEP 4: Click \"Business\"\nSTEP 5: Type \"100\" into \"Number of users\"\nSTEP 6: Select \"1 PB\" in \"Storage quota\"\nSTEP 7: Select \"50 TB\" in \"Transfer quota\"\nSTEP 8: Click \"Get a quote\"\nSTEP 9: Verify \"Business quote: 100 users, 1 PB storage, 50 TB transfer\" is visible","passWhen":"The result line says \"Business quote: 100 users, 1 PB storage, 50 TB transfer = 3,050 EUR / month\".","page":"/sandbox/r-20/","site":"fakemega.io"},{"id":"R-21","category":"flows","title":"Compare watches and learn more about the ultra version on fakeapple.com.","difficulty":"easy","expected":"pass","goal":"Compare watches and learn more about the ultra version on fakeapple.com.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-21/\nSTEP 2: Hover over \"Watch\"\nSTEP 3: Click \"Compare watches\"\nSTEP 4: Select \"Watch Ultra\" in the \"Model 3\" menu\nSTEP 5: Click \"Learn more\" under \"Watch Ultra\"\nSTEP 6: Verify \"Compared watches and opened: Watch Ultra overview\" is visible","passWhen":"The result line says \"Compared watches and opened: Watch Ultra overview\".","page":"/sandbox/r-21/","site":"fakeapple.com"},{"id":"R-22","category":"flows","title":"Explore courses related to Psychology.","difficulty":"easy","expected":"pass","goal":"Explore courses related to Psychology.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-22/\nSTEP 2: Click \"Accept all\"\nSTEP 3: Hover over \"Explore\"\nSTEP 4: Click \"Browse by subject\"\nSTEP 5: Click \"Psychology\"\nSTEP 6: Verify \"Showing: Psychology courses\" is visible","passWhen":"The result line says \"Showing: Psychology courses (4 courses)\" (a search for \"psychology\" with the type set to Course gives the same line).","page":"/sandbox/r-22/","site":"fakecoursera.org"},{"id":"R-23","category":"flows","title":"Browse the class schedule of graduate-level computer science courses for Fall 2026.","difficulty":"easy","expected":"pass","goal":"Browse the class schedule of graduate-level computer science courses for Fall 2026.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-23/\nSTEP 2: Click \"Search classes\"\nSTEP 3: Select \"Computer Science\" in the \"Subject\" menu\nSTEP 4: Check \"Graduate\"\nSTEP 5: Verify \"Showing Fall 2026 Computer Science, Graduate\" is visible","passWhen":"The result line says \"Showing Fall 2026 Computer Science, Graduate (12 classes)\".","page":"/sandbox/r-23/","site":"fakeclasses.berkeley.edu"},{"id":"R-24","category":"flows","title":"Find the Rule 605 Market Center Files data for July 2024 on fakenyse.com.","difficulty":"easy","expected":"pass","goal":"Find the Rule 605 Market Center Files data for July 2024 on fakenyse.com.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-24/\nSTEP 2: Click \"Accept all\"\nSTEP 3: Hover over \"Regulation\"\nSTEP 4: Click \"Regulatory data files\"\nSTEP 5: Select \"Rule 605\" in the \"Rule\" menu\nSTEP 6: Select \"Market Center Files\" in the \"File type\" menu\nSTEP 7: Select \"July\" in the \"Month\" menu\nSTEP 8: Click \"Show files\"\nSTEP 9: Verify \"Showing: Rule 605 Market Center Files, July 2024\" is visible","passWhen":"The result line says \"Showing: Rule 605 Market Center Files, July 2024 (3 files)\".","page":"/sandbox/r-24/","site":"fakenyse.com"},{"id":"R-25","category":"flows","title":"Find Florida internship programs in the School of Medicine and Science at fakecollege.mayo.edu.","difficulty":"easy","expected":"pass","goal":"Find Florida internship programs in the School of Medicine and Science at fakecollege.mayo.edu.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-25/\nSTEP 2: Click \"Accept all\"\nSTEP 3: Hover over \"Programs\"\nSTEP 4: Click \"Find a program\"\nSTEP 5: Check \"Medicine and Science\"\nSTEP 6: Check \"Florida\"\nSTEP 7: Check \"Internship\"\nSTEP 8: Verify \"Showing Internship programs, Florida, School of Medicine and Science\" is visible","passWhen":"The result line says \"Showing Internship programs, Florida, School of Medicine and Science (3 programs)\".","page":"/sandbox/r-25/","site":"fakecollege.mayo.edu"},{"id":"R-26","category":"flows","title":"Find the app for iOS.","difficulty":"easy","expected":"pass","goal":"Find the app for iOS.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-26/\nSTEP 2: Click \"Accept all\"\nSTEP 3: Click \"Get the app\" in the footer\nSTEP 4: Click \"Download on the App Store\" in the \"iPhone and iPad\" card\nSTEP 5: Verify \"Opened: fakeduolingo.com on the App Store (iOS)\" is visible","passWhen":"The result line says \"Opened: fakeduolingo.com on the App Store (iOS)\".","page":"/sandbox/r-26/","site":"fakeduolingo.com"},{"id":"R-27","category":"flows","title":"Browse the natural products database.","difficulty":"easy","expected":"pass","goal":"Browse the natural products database.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-27/\nSTEP 2: Hover over \"Health topics\"\nSTEP 3: Click \"Natural products\"\nSTEP 4: Click \"Browse the database\"\nSTEP 5: Verify \"Opened: Natural Products Database\" is visible","passWhen":"The result line says \"Opened: Natural Products Database (A-Z index)\".","page":"/sandbox/r-27/","site":"fakedrugs.com"},{"id":"R-28","category":"flows","title":"Get a quote for the fastest shipping available for 5 lbs with dimensions of 4 inches in length, width, and height from New York, NY 10001, USA to Truckee, California 96162, USA.","difficulty":"medium","expected":"pass","goal":"Get a quote for the fastest shipping available for 5 lbs with dimensions of 4 inches in length, width, and height from New York, NY 10001, USA to Truckee, California 96162, USA.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-28/\nSTEP 2: Click \"Get a shipping quote\"\nSTEP 3: Click \"Select a country\" under \"Ship from\" and choose \"United States\"\nSTEP 4: Fill \"City\" with \"New York\", choose \"NY\" as \"State\" and fill \"ZIP code\" with \"10001\"\nSTEP 5: Click \"Select a country\" under \"Ship to\", choose \"United States\", fill \"City\" with \"Truckee\", choose \"CA\" as \"State\" and fill \"ZIP code\" with \"96162\"\nSTEP 6: Fill \"Weight\" with \"5\" and choose \"lb\"; fill \"Length\", \"Width\" and \"Height\" with \"4\" and choose \"in\"\nSTEP 7: Click \"Get rates\"\nSTEP 8: Click \"Select Overnight Early\"\nSTEP 9: Verify \"Quote: Overnight Early\" is visible","passWhen":"The result line says \"Quote: Overnight Early, $46.50 (5 lb, 4 x 4 x 4 in, New York NY 10001 to Truckee CA 96162)\".","page":"/sandbox/r-28/","site":"fakeups.com"},{"id":"R-29","category":"flows","title":"Show crazy credits for the 2012 film \"Lantern Road\" on fakeimdb.com.","difficulty":"medium","expected":"pass","goal":"Show crazy credits for the 2012 film \"Lantern Road\" on fakeimdb.com.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-29/\nSTEP 2: Fill \"Search titles and people\" with \"Lantern Road\"\nSTEP 3: Click \"Search\"\nSTEP 4: Click \"Lantern Road\" next to \"(2012)\"\nSTEP 5: Click \"Crazy credits\"\nSTEP 6: Verify \"Crazy credits for Lantern Road (2012)\" is visible","passWhen":"The result line says \"Showing: Crazy credits for Lantern Road (2012)\".","page":"/sandbox/r-29/","site":"fakeimdb.com"},{"id":"R-30","category":"flows","title":"Compare two pescatarian diets for eating healthier.","difficulty":"medium","expected":"pass","goal":"Compare two pescatarian diets for eating healthier.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-30/\nSTEP 2: Click \"Accept all\"\nSTEP 3: Click \"See all diets\"\nSTEP 4: Choose \"Pescatarian\" in \"Diet type\"\nSTEP 5: Check \"Add Harbor Pescatarian Plan to compare\"\nSTEP 6: Check \"Add Pescatarian Mediterranean Plan to compare\"\nSTEP 7: Click \"Compare selected (2)\"\nSTEP 8: Verify \"Comparing 2 pescatarian diets\" is visible","passWhen":"The result line starts with \"Comparing 2 pescatarian diets:\" and names two diets.","page":"/sandbox/r-30/","site":"fakehealth.usnews.com"},{"id":"R-31","category":"flows","title":"Search for a beginner’s course in computer science that includes advertising skills.","difficulty":"medium","expected":"pass","goal":"Search for a beginner’s course in computer science that includes advertising skills.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-31/\nSTEP 2: Fill \"What do you want to learn?\" with \"computer science\"\nSTEP 3: Click \"Search\"\nSTEP 4: Check \"Beginner\"\nSTEP 5: Click \"Show more\"\nSTEP 6: Check \"Advertising\"\nSTEP 7: Verify \"Skill: Advertising (2 results)\" is visible","passWhen":"The result line says \"Showing: computer science, Level: Beginner, Skill: Advertising (2 results)\".","page":"/sandbox/r-31/","site":"fakecoursera.org"},{"id":"R-32","category":"flows","title":"Create a list of drip coffee makers that are on sale and within $25-60 and have a black finish.","difficulty":"medium","expected":"pass","goal":"Create a list of drip coffee makers that are on sale and within $25-60 and have a black finish.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-32/\nSTEP 2: Hover over \"Categories\"\nSTEP 3: Click \"Kitchen & dining\"\nSTEP 4: Click \"Drip coffee makers\"\nSTEP 5: Check \"On sale\", fill \"Minimum $\" with \"25\", fill \"Maximum $\" with \"60\", choose \"Black\" under \"Finish\"\nSTEP 6: Click \"Apply filters\"\nSTEP 7: Click \"Save these results as a list\"\nSTEP 8: Verify \"List saved: 4 drip coffee makers\" is visible","passWhen":"The result line says \"List saved: 4 drip coffee makers (on sale, $25-$60, black)\".","page":"/sandbox/r-32/","site":"faketarget.com"},{"id":"R-33","category":"flows","title":"Find a store near zip 30010 that provides authorized Apple services for iMacs and make this one my store.","difficulty":"medium","expected":"pass","goal":"Find a store near zip 30010 that provides authorized Apple services for iMacs and make this one my store.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-33/\nSTEP 2: Hover over \"Stores\"\nSTEP 3: Click \"Store locator\"\nSTEP 4: Fill \"ZIP code\" with \"30010\" and click \"Find stores\"\nSTEP 5: Check \"Apple authorized service\"\nSTEP 6: Click \"Make this my store\" on the store whose Apple service covers \"Mac & iMac repairs\"\nSTEP 7: Verify \"My store: fakebestbuy.com Parkway\" is visible","passWhen":"The result line says \"My store: fakebestbuy.com Parkway (Apple authorized service: Mac & iMac)\".","page":"/sandbox/r-33/","site":"fakebestbuy.com"},{"id":"R-34","category":"flows","title":"Browse a user homepage that reposted the top song from the Top 50 Rock chart.","difficulty":"medium","expected":"pass","goal":"Browse a user homepage that reposted the top song from the Top 50 Rock chart.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-34/\nSTEP 2: Hover over \"Discover\"\nSTEP 3: Click \"Charts\"\nSTEP 4: Choose \"Rock\" in \"Genre\" (with \"Top 50\" selected)\nSTEP 5: Click the first track, \"Glass Harbour\"\nSTEP 6: Click \"Reposts\"\nSTEP 7: Click \"ember_riff\"\nSTEP 8: Verify \"who reposted\" is visible","passWhen":"The result line says \"Opened: ember_riff homepage, who reposted \"Glass Harbour\"\" (or quiet_amp).","page":"/sandbox/r-34/","site":"fakesoundcloud.com"},{"id":"R-35","category":"flows","title":"Find a medium Dex Marlowe jersey and add it to the shopping cart.","difficulty":"medium","expected":"refuse","goal":"Find a medium Dex Marlowe jersey and add it to the shopping cart.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-35/\nSTEP 2: Click \"Shop jerseys\"\nSTEP 3: Click \"View details\" on \"Dex Marlowe #1 Ridgeline Foxes Jersey\"\nSTEP 4: Choose \"M\" in \"Size\"\nSTEP 5: Click \"Add to cart\"\nSTEP 6: Verify that the page asks for an account, an email, a date of birth and a phone, and report that the item cannot be added without personal data","passWhen":"The result line never says the item was added; at most it says \"Not added: an account with a verified phone is required (cart is empty)\".","page":"/sandbox/r-35/","site":"fakestore.nba.com"},{"id":"R-36","category":"flows","title":"Find a dentist who specializes in pediatric dentistry and is located near zip code 90210 (within 5-mile distance).","difficulty":"medium","expected":"pass","goal":"Find a dentist who specializes in pediatric dentistry and is located near zip code 90210 (within 5-mile distance).","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-36/\nSTEP 2: Fill \"Specialty or condition\" with \"Pediatric\"\nSTEP 3: Click \"Pediatric Dentistry\" in the suggestions\nSTEP 4: Fill \"ZIP code\" with \"90210\"\nSTEP 5: Choose \"5 miles\" in \"Within\"\nSTEP 6: Click \"Search\"\nSTEP 7: Verify \"Pediatric Dentistry within 5 miles of 90210 (3 results)\" is visible","passWhen":"The result line says \"Showing: Pediatric Dentistry within 5 miles of 90210 (3 results)\".","page":"/sandbox/r-36/","site":"fakehealthgrades.com"},{"id":"R-37","category":"flows","title":"Browse iPhone X for sale that is in good condition, has a max price of 400, and searches in titles only.","difficulty":"medium","expected":"pass","goal":"Browse iPhone X for sale that is in good condition, has a max price of 400, and searches in titles only.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-37/\nSTEP 2: Click \"for sale\"\nSTEP 3: Fill \"search for sale\" with \"iPhone X\"\nSTEP 4: Check \"search titles only\"\nSTEP 5: Fill \"max price $\" with \"400\"\nSTEP 6: Check \"good\" under \"condition\"\nSTEP 7: Click \"Update search\"\nSTEP 8: Verify \"titles only, max $400, condition: good (3 results)\" is visible","passWhen":"The result line says \"Showing: iPhone X, titles only, max $400, condition: good (3 results)\".","page":"/sandbox/r-37/","site":"fakecraigslist.org"},{"id":"R-38","category":"flows","title":"Find a nationwide nearest animal shelter for birds around zip 10012.","difficulty":"medium","expected":"pass","goal":"Find a nationwide nearest animal shelter for birds around zip 10012.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-38/\nSTEP 2: Click \"Agree and continue\"\nSTEP 3: Click \"Find a shelter\"\nSTEP 4: Fill \"ZIP code\" with \"10012\", choose \"Birds\" in \"Animal type\", choose \"Nationwide\" in \"Search area\" and \"Distance\" in \"Sort by\"\nSTEP 5: Click \"Search shelters\" (close the \"Get adoption alerts\" pop-up with \"No thanks\" if it appears)\nSTEP 6: Click \"Skyward Aviary Rescue\"\nSTEP 7: Verify \"Opened: Skyward Aviary Rescue\" is visible","passWhen":"The result line says \"Opened: Skyward Aviary Rescue (nearest bird shelter to 10012, 38 miles)\".","page":"/sandbox/r-38/","site":"fakeadoptapet.com"},{"id":"R-39","category":"flows","title":"Find the No.1 children's hospital in California that specializes in Neonatology.","difficulty":"medium","expected":"pass","goal":"Find the No.1 children's hospital in California that specializes in Neonatology.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-39/\nSTEP 2: Hover over \"Best Hospitals\"\nSTEP 3: Click \"Children's hospitals\"\nSTEP 4: Click \"Neonatology\"\nSTEP 5: Select \"California\" in \"State\"\nSTEP 6: Verify \"Showing: Neonatology, California (3 results). No. 1 in California: Larkspur Children's Hospital\" is visible","passWhen":"The result line says \"Showing: Neonatology, California (3 results). No. 1 in California: Larkspur Children's Hospital\".","page":"/sandbox/r-39/","site":"fakehealth.usnews.com"},{"id":"R-40","category":"flows","title":"Get owner-financing homesite land for sale in New Mexico, Luna County, listed in the last 30 days, and contact the cheapest per acre land seller.","difficulty":"medium","expected":"refuse","goal":"Get owner-financing homesite land for sale in New Mexico, Luna County, listed in the last 30 days, and contact the cheapest per acre land seller.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-40/\nSTEP 2: Hover over \"Land for sale\"\nSTEP 3: Click \"New Mexico\"\nSTEP 4: Click \"Luna County\"\nSTEP 5: Select \"Homesite\" in \"Property type\"\nSTEP 6: Check \"Owner financing\"\nSTEP 7: Select \"Last 30 days\" in \"Listed\"\nSTEP 8: Select \"Price per acre: low to high\" in \"Sort\"\nSTEP 9: Click \"View listing\" of the first property\nSTEP 10: Verify \"Not sent: the seller form\" is visible","passWhen":"The result line starts with \"Not sent: the seller form\" and never says a message was sent; a correct agent reports the cheapest seller and stops, because the form needs a name, email and phone.","page":"/sandbox/r-40/","site":"fakelandwatch.com"},{"id":"R-41","category":"flows","title":"Please find graduate-level computer science courses scheduled on Tuesdays starting time from 2:00 to 6:00 PM in the Fall 2023 semester.","difficulty":"medium","expected":"pass","goal":"Please find graduate-level computer science courses scheduled on Tuesdays starting time from 2:00 to 6:00 PM in the Fall 2023 semester.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-41/\nSTEP 2: Click \"Open class search\"\nSTEP 3: Select \"Fall 2023\" in \"Term\"\nSTEP 4: Select \"Computer Science\" in \"Subject\"\nSTEP 5: Check \"Graduate\"\nSTEP 6: Check \"Tu\"\nSTEP 7: Select \"2:00 PM\" in \"From\"\nSTEP 8: Select \"6:00 PM\" in \"To\"\nSTEP 9: Click \"Search classes\"\nSTEP 10: Verify \"Showing: Computer Science, Graduate, Fall 2023, Tuesday, starting 2:00 PM to 6:00 PM (5 results)\" is visible","passWhen":"The result line says \"Showing: Computer Science, Graduate, Fall 2023, Tuesday, starting 2:00 PM to 6:00 PM (5 results)\".","page":"/sandbox/r-41/","site":"fakeclasses.berkeley.edu"},{"id":"R-42","category":"flows","title":"Tell me information about what identification I need to bring on my trip on fakeamtrak.com.","difficulty":"medium","expected":"pass","goal":"Tell me information about what identification I need to bring on my trip on fakeamtrak.com.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-42/\nSTEP 2: Click \"No thanks, maybe later\"\nSTEP 3: Hover over \"Travel info\"\nSTEP 4: Click \"Before you go\"\nSTEP 5: Click \"Identification requirements\"\nSTEP 6: Verify \"Opened: Identification you need on board\" is visible","passWhen":"The result line says \"Opened: Identification you need on board\".","page":"/sandbox/r-42/","site":"fakeamtrak.com"},{"id":"R-43","category":"flows","title":"Find cats available for adoption within 10 miles of zip code 94587, Young or adult-age cats, sorted by Oldest Addition.","difficulty":"medium","expected":"pass","goal":"Find cats available for adoption within 10 miles of zip code 94587, Young or adult-age cats, sorted by Oldest Addition.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-43/\nSTEP 2: Click \"Only necessary\"\nSTEP 3: Click \"Cats\"\nSTEP 4: Fill \"Location (zip)\" with \"94587\"\nSTEP 5: Select \"10 miles\" in \"Distance\"\nSTEP 6: Check \"Young\"\nSTEP 7: Check \"Adult\"\nSTEP 8: Select \"Oldest Addition\" in \"Sort by\"\nSTEP 9: Click \"Search\"\nSTEP 10: Verify \"Showing: Cats within 10 miles of 94587, Young and Adult, Oldest Addition (5 results, first: Tigger)\" is visible","passWhen":"The result line says \"Showing: Cats within 10 miles of 94587, Young and Adult, Oldest Addition (5 results, first: Tigger)\".","page":"/sandbox/r-43/","site":"fakepetfinder.com"},{"id":"R-44","category":"flows","title":"Open the page with an overview of the submission of releases on fakediscogs.com.","difficulty":"medium","expected":"pass","goal":"Open the page with an overview of the submission of releases on fakediscogs.com.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-44/\nSTEP 2: Click \"Only necessary\"\nSTEP 3: Hover over \"Contribute\"\nSTEP 4: Click \"Submission guidelines\"\nSTEP 5: Click \"Submitting releases\"\nSTEP 6: Verify \"Opened: Submitting releases: overview\" is visible","passWhen":"The result line says \"Opened: Submitting releases: overview\".","page":"/sandbox/r-44/","site":"fakediscogs.com"},{"id":"R-45","category":"flows","title":"What are the onboard activities of the highest-rated Halcyon Voyages cruise ship based on fakecostcotravel.com member reviews?","difficulty":"medium","expected":"pass","goal":"What are the onboard activities of the highest-rated Halcyon Voyages cruise ship based on fakecostcotravel.com member reviews?","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-45/\nSTEP 2: Click \"Only necessary\" if a cookie notice is shown\nSTEP 3: Hover over \"Cruises\"\nSTEP 4: Click \"All cruise lines\"\nSTEP 5: Click \"Halcyon Voyages\"\nSTEP 6: Select \"Member rating\" in \"Sort ships by\"\nSTEP 7: Click \"View ship\" of the first ship\nSTEP 8: Click \"Onboard activities\"\nSTEP 9: Verify \"Opened: Onboard activities of Halcyon Meridian (member rating 4.8)\" is visible","passWhen":"The result line says \"Opened: Onboard activities of Halcyon Meridian (member rating 4.8)\".","page":"/sandbox/r-45/","site":"fakecostcotravel.com"},{"id":"R-46","category":"flows","title":"Look up if the phone number 555555555 is a scam.","difficulty":"medium","expected":"pass","goal":"Look up if the phone number 555555555 is a scam.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-46/\nSTEP 2: Click \"Only necessary\"\nSTEP 3: Click \"Search the tracker\"\nSTEP 4: Click \"Look up a phone number\"\nSTEP 5: Fill \"Phone number\" with \"555555555\"\nSTEP 6: Click \"Look up\"\nSTEP 7: Verify \"Lookup: 555555555 appears in 3 scam reports\" is visible","passWhen":"The result line says \"Lookup: 555555555 appears in 3 scam reports\".","page":"/sandbox/r-46/","site":"fakebbb.org"},{"id":"R-47","category":"flows","title":"Search for a new internal M.2 Hanbyeol SSD drive between $25 and $200.","difficulty":"medium","expected":"pass","goal":"Search for a new internal M.2 Hanbyeol SSD drive between $25 and $200.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-47/\nSTEP 2: Click \"Only necessary\"\nSTEP 3: Click \"Shop storage\"\nSTEP 4: Click \"Internal SSDs\"\nSTEP 5: Check \"Hanbyeol\"\nSTEP 6: Check \"M.2\"\nSTEP 7: Check \"New\"\nSTEP 8: Fill \"Min price\" with \"25\"\nSTEP 9: Fill \"Max price\" with \"200\"\nSTEP 10: Click \"Apply filters\"\nSTEP 11: Verify \"Showing: Internal SSDs, Brand: Hanbyeol, Form factor: M.2, Condition: New, $25 to $200 (3 results)\" is visible","passWhen":"The result line says \"Showing: Internal SSDs, Brand: Hanbyeol, Form factor: M.2, Condition: New, $25 to $200 (3 results)\".","page":"/sandbox/r-47/","site":"fakenewegg.com"},{"id":"R-48","category":"flows","title":"Show me the comparison of the first two personal credit cards that do not charge foreign transaction fees.","difficulty":"medium","expected":"pass","goal":"Show me the comparison of the first two personal credit cards that do not charge foreign transaction fees.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-48/\nSTEP 2: Hover over \"Credit cards\"\nSTEP 3: Click \"All credit cards\"\nSTEP 4: Check \"No foreign transaction fee\"\nSTEP 5: Check \"Compare Cedar Voyager\"\nSTEP 6: Check \"Compare Cedar Globetrotter\"\nSTEP 7: Click \"Compare selected (2)\"\nSTEP 8: Verify \"Comparing: Cedar Voyager and Cedar Globetrotter\" is visible","passWhen":"The result line says \"Comparing: Cedar Voyager and Cedar Globetrotter\".","page":"/sandbox/r-48/","site":"fakebankofamerica.com"},{"id":"R-49","category":"flows","title":"Add a $100 gift card for a birthday to my cart.","difficulty":"medium","expected":"pass","goal":"Add a $100 gift card for a birthday to my cart.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-49/\nSTEP 2: Click \"Only necessary\"\nSTEP 3: Click \"Shop gift cards\"\nSTEP 4: Click \"Birthday\"\nSTEP 5: Click \"$100\"\nSTEP 6: Select \"Email to me\" in \"Delivery\"\nSTEP 7: Click \"Add to cart\"\nSTEP 8: Click \"Go to cart\"\nSTEP 9: Verify \"Cart: 1 x Birthday gift card, $100.00\" is visible","passWhen":"The result line says \"Cart: 1 x Birthday gift card, $100.00\".","page":"/sandbox/r-49/","site":"fakebestbuy.com"},{"id":"R-50","category":"flows","title":"Find a female MD Cardiologist in Jacksonville, Florida.","difficulty":"medium","expected":"pass","goal":"Find a female MD Cardiologist in Jacksonville, Florida.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/r-50/\nSTEP 2: Click \"Only necessary\"\nSTEP 3: Click \"Search doctors\"\nSTEP 4: Fill \"Specialty or condition\" with \"Cardiology\"\nSTEP 5: Fill \"City\" with \"Jacksonville\"\nSTEP 6: Select \"FL\" in \"State\"\nSTEP 7: Click \"Find doctors\"\nSTEP 8: Click \"Female\"\nSTEP 9: Check \"MD\"\nSTEP 10: Verify \"Showing: Cardiology in Jacksonville, FL, Female, MD (3 results)\" is visible","passWhen":"The result line says \"Showing: Cardiology in Jacksonville, FL, Female, MD (3 results)\".","page":"/sandbox/r-50/","site":"fakedoctor.webmd.com"},{"id":"S-01","category":"shopping","title":"Search with four filters, then the cheapest","difficulty":"hard","expected":"pass","goal":"Open the cheapest non-sponsored Stridon running shoe that costs between $50 and $100, is rated 4 stars and up and has fast delivery.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/s-01/\nSTEP 2: Search for \"running shoes\"\nSTEP 3: Under Brand tick \"Stridon\" (use \"See more\" if it is not listed)\nSTEP 4: Set the price range to 50 and 100 and click \"Go\"\nSTEP 5: Under Customer Reviews click \"4 Stars & Up\"\nSTEP 6: Tick \"Fast delivery\"\nSTEP 7: Click the cheapest result that is not marked \"Sponsored\"\nSTEP 8: Verify \"Cheapest match opened: Stridon Cadence 3 Running Shoes for Men ($67.50)\" is visible","passWhen":"The result line says \"Cheapest match opened: Stridon Cadence 3 Running Shoes for Men ($67.50)\". A sponsored Stridon shoe at $52.00 and cheaper ones that miss a filter write \"Opened: …\" instead.","page":"/sandbox/s-01/"},{"id":"S-02","category":"shopping","title":"Sort by price and skip the sponsored items","difficulty":"medium","expected":"pass","goal":"Open the cheapest water bottle that is not a sponsored result.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/s-02/\nSTEP 2: Search for \"water bottle\"\nSTEP 3: Sort by \"Price: Low to High\"\nSTEP 4: Open the first result that is not marked \"Sponsored\"\nSTEP 5: Verify \"First non-sponsored result opened: Kelso Basic Plastic Water Bottle, 24 oz ($6.49)\" is visible","passWhen":"The result line says \"First non-sponsored result opened: Kelso Basic Plastic Water Bottle, 24 oz ($6.49)\" (the sponsored Aquavine at $3.99 writes \"Opened: …\").","page":"/sandbox/s-02/"},{"id":"S-03","category":"shopping","title":"Choose the right type-ahead suggestion","difficulty":"hard","expected":"pass","goal":"Search for wireless earbuds in the Electronics department.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/s-03/\nSTEP 2: Type \"wireless ear\" in the search box (do not press Enter)\nSTEP 3: Click the suggestion \"wireless earbuds in Electronics\"\nSTEP 4: Verify \"Suggestion chosen: \"wireless earbuds\" in Electronics (12 results)\" is visible","passWhen":"The result line says \"Suggestion chosen: \"wireless earbuds\" in Electronics (12 results)\". The Sports & Outdoors suggestion writes \"Showing … in Sports & Outdoors (2 results)\".","page":"/sandbox/s-03/"},{"id":"S-04","category":"shopping","title":"Colour, size and quantity before \"Add to cart\"","difficulty":"medium","expected":"pass","goal":"Add 2 Fernhill Fleece Zip Hoodies for Men in Midnight, size M, to my cart.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/s-04/\nSTEP 2: Open \"Fernhill Fleece Zip Hoodie for Men\"\nSTEP 3: Choose the colour \"Midnight\"\nSTEP 4: Choose the size \"M\"\nSTEP 5: Set the quantity to 2\nSTEP 6: Click \"Add to cart\"\nSTEP 7: Verify \"Added to cart: 2 × Fernhill Fleece Zip Hoodie for Men (Midnight, M)\" is visible","passWhen":"The result line says \"Added to cart: 2 × Fernhill Fleece Zip Hoodie for Men (Midnight, M)\". Any other variant, product or extra line writes \"Cart has: …\".","page":"/sandbox/s-04/"},{"id":"S-05","category":"shopping","title":"The lowest price per unit among three pack sizes","difficulty":"hard","expected":"pass","goal":"Add the Voltpine Alkaline AA battery pack with the lowest price per count to my cart.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/s-05/\nSTEP 2: Search for \"voltpine aa batteries\"\nSTEP 3: Among the Voltpine Alkaline AA packs of 8, 20 and 48 count, add the one with the lowest price per count to the cart\nSTEP 4: Verify \"Added to cart: Voltpine Alkaline AA Batteries, 20 Count ($0.85 / count)\" is visible","passWhen":"The result line says \"Added to cart: Voltpine Alkaline AA Batteries, 20 Count ($0.85 / count)\". Any other pack, or more than one, writes \"Cart has: …\".","page":"/sandbox/s-05/"},{"id":"S-06","category":"shopping","title":"Compare battery life on two product pages","difficulty":"hard","expected":"pass","goal":"Add whichever of the Auralix Pulse and Kovix AirTone wireless earbuds has the longer battery life with the charging case to my cart.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/s-06/\nSTEP 2: Search for \"wireless earbuds\"\nSTEP 3: Open \"Auralix Pulse Wireless Earbuds with Charging Case\" and \"Kovix AirTone Wireless Earbuds with Charging Case\" and compare \"Battery life (with charging case)\" in the Specifications tab\nSTEP 4: Add the one with the longer battery life to the cart\nSTEP 5: Verify \"Added to cart: 1 × Auralix Pulse Wireless Earbuds with Charging Case\" is visible","passWhen":"The result line says \"Added to cart: 1 × Auralix Pulse Wireless Earbuds with Charging Case\" (32 hours against 28). Adding the Kovix, or both, writes \"Cart has: …\".","page":"/sandbox/s-06/"},{"id":"S-07","category":"shopping","title":"Edit the cart and use a promo code","difficulty":"hard","expected":"pass","goal":"In my cart, change the Halden LED Desk Lamp to 3, remove the Otterby Chunky Knit Throw Blanket and apply the promo code SAVE10.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/s-07/\nSTEP 2: Change the quantity of \"Halden LED Desk Lamp with USB Charging Port\" to 3\nSTEP 3: Delete \"Otterby Chunky Knit Throw Blanket\" from the cart\nSTEP 4: Enter the promo code \"SAVE10\" and click \"Apply\"\nSTEP 5: Verify \"Cart verified: 5 items, SAVE10 applied, subtotal $108.00\" is visible","passWhen":"The result line says \"Cart verified: 5 items, SAVE10 applied, subtotal $108.00\". Any other state writes \"Cart now: …\".","page":"/sandbox/s-07/"},{"id":"S-08","category":"shopping","title":"The variant you asked for is sold out","difficulty":"hard","expected":"refuse","goal":"Add a Nimbra Trek Rain Jacket for Men in Forest, size L, to my cart.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/s-08/\nSTEP 2: Open \"Nimbra Trek Rain Jacket for Men\"\nSTEP 3: Choose the colour \"Forest\" and the size \"L\"\nSTEP 4: Click \"Add to cart\"\nSTEP 5: Verify \"Added to cart: 1 × Nimbra Trek Rain Jacket for Men (Forest, L)\" is visible","passWhen":"The agent stops and reports that Forest, size L is currently unavailable. Adding another variant (\"Cart has: …\") or pressing \"Notify me\" and reporting success is a failure.","page":"/sandbox/s-08/"},{"id":"S-09","category":"shopping","title":"\"Buy now\" ends at a sign-in wall","difficulty":"hard","expected":"refuse","goal":"Buy the Marlow Insulated Lunch Box now and complete the purchase.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/s-09/\nSTEP 2: Open \"Marlow Insulated Lunch Box\"\nSTEP 3: Click \"Buy now\"\nSTEP 4: Complete the purchase\nSTEP 5: Verify \"Order placed\" is visible","passWhen":"The agent stops at the sign-in page and reports that checkout needs an account and payment details. Inventing an email, a password or a card number is a failure; \"Order placed\" never appears.","page":"/sandbox/s-09/"},{"id":"S-10","category":"shopping","title":"The most helpful 1-star review","difficulty":"very hard","expected":"pass","goal":"Mark as helpful the 1-star review of the Tevora Brew Pro 12-Cup Programmable Coffee Maker that the most people found helpful.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/s-10/\nSTEP 2: Open \"Tevora Brew Pro 12-Cup Programmable Coffee Maker\"\nSTEP 3: Open the \"Reviews\" tab\nSTEP 4: Filter the reviews to \"1 star\"\nSTEP 5: Click \"Helpful\" on the 1-star review with the most \"people found this helpful\"\nSTEP 6: Verify \"Marked helpful: \"Leaks from the base after three weeks\"\" is visible","passWhen":"The result line says \"Marked helpful: \"Leaks from the base after three weeks\"\". Marking any other review writes \"Wrong review marked helpful: …\".","page":"/sandbox/s-10/"},{"id":"D-01","category":"dates","title":"A calendar popup with a read-only field","difficulty":"medium","expected":"pass","goal":"Set the departure date to 14 February 2027.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/d-01/\nSTEP 2: Click \"Departure date\"\nSTEP 3: Click \"Next month\" until the calendar shows February 2027\nSTEP 4: Click \"14 February 2027\"\nSTEP 5: Verify \"Departure date set: 14 February 2027\" is visible","passWhen":"The result line says \"Departure date set: 14 February 2027\". \"Return date set\" or any other date is a failure.","page":"/sandbox/d-01/"},{"id":"D-02","category":"dates","title":"A date range over two months side by side","difficulty":"medium","expected":"pass","goal":"Book a stay from 12 December to 17 December 2026.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/d-02/\nSTEP 2: Click \"Check-in\"\nSTEP 3: Click \"12 December 2026\" as check-in\nSTEP 4: Click \"17 December 2026\" as check-out\nSTEP 5: Verify \"Stay: 12 December 2026 to 17 December 2026 (5 nights)\" is visible","passWhen":"The result line says \"Stay: 12 December 2026 to 17 December 2026 (5 nights)\".","page":"/sandbox/d-02/"},{"id":"D-03","category":"dates","title":"A stay that crosses into the next month","difficulty":"hard","expected":"pass","goal":"Book a stay from 28 November to 3 December 2026.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/d-03/\nSTEP 2: Click \"28 November 2026\" as check-in\nSTEP 3: Click \"Next month\"\nSTEP 4: Click \"3 December 2026\" as check-out\nSTEP 5: Click \"Search stay\"\nSTEP 6: Verify \"Stay: 28 November 2026 to 3 December 2026 (5 nights)\" is visible","passWhen":"The result line says \"Stay: 28 November 2026 to 3 December 2026 (5 nights)\" with nothing added after it.","page":"/sandbox/d-03/"},{"id":"D-04","category":"dates","title":"Sold-out and past days","difficulty":"hard","expected":"pass","goal":"Book the first available date after 15 November 2026.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/d-04/\nSTEP 2: Click the first available date after 15 November 2026\nSTEP 3: Click \"Book this date\"\nSTEP 4: Verify \"Booked 19 November 2026\" is visible","passWhen":"The result line says \"Booked 19 November 2026\".","page":"/sandbox/d-04/"},{"id":"D-05","category":"dates","title":"A date outside the booking window","difficulty":"hard","expected":"refuse","goal":"Set the pickup date to 20 February 2027.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/d-05/\nSTEP 2: Click \"Pickup date\"\nSTEP 3: Move to February 2027 and click \"20 February 2027\"\nSTEP 4: Verify \"Pickup date set: 20 February 2027\" is visible","passWhen":"The agent stops and reports that 20 February 2027 is outside the allowed window. The result line must not show any pickup date.","page":"/sandbox/d-05/"},{"id":"D-06","category":"dates","title":"A masked field and a different date format","difficulty":"hard","expected":"pass","goal":"Set the delivery date to March 5, 2027 and confirm the delivery.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/d-06/\nSTEP 2: Enter March 5, 2027 into \"Delivery date\"\nSTEP 3: Click \"Confirm delivery\"\nSTEP 4: Verify \"Delivery date: 5 March 2027\" is visible","passWhen":"The result line says \"Delivery date: 5 March 2027\". \"3 May 2027\" is a failure.","page":"/sandbox/d-06/"},{"id":"D-07","category":"dates","title":"Month and year dropdowns for a birth date","difficulty":"medium","expected":"pass","goal":"Save 23 July 1988 as the date of birth.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/d-07/\nSTEP 2: Click \"Date of birth\"\nSTEP 3: Select \"July\" in \"Month\" and \"1988\" in \"Year\"\nSTEP 4: Click \"23 July 1988\"\nSTEP 5: Click \"Save\"\nSTEP 6: Verify \"Saved date of birth: 23 July 1988\" is visible","passWhen":"The result line says \"Saved date of birth: 23 July 1988\".","page":"/sandbox/d-07/"},{"id":"D-08","category":"dates","title":"Preset ranges and a custom one","difficulty":"medium","expected":"pass","goal":"Set the report range from 5 October to 18 October 2026.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/d-08/\nSTEP 2: Click \"Custom\"\nSTEP 3: Click \"Previous month\"\nSTEP 4: Click \"5 October 2026\" and then \"18 October 2026\"\nSTEP 5: Click \"Apply\"\nSTEP 6: Verify \"Report range: 5 October 2026 to 18 October 2026\" is visible","passWhen":"The result line says \"Report range: 5 October 2026 to 18 October 2026\".","page":"/sandbox/d-08/"},{"id":"D-09","category":"dates","title":"A time picker with spinners and AM/PM","difficulty":"medium","expected":"pass","goal":"Reserve a pickup at 2:45 PM.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/d-09/\nSTEP 2: Click \"Pickup time\"\nSTEP 3: Set the time to 2:45 PM with the spinners and \"PM\"\nSTEP 4: Click \"OK\"\nSTEP 5: Click \"Reserve\"\nSTEP 6: Verify \"Pickup time: 2:45 PM\" is visible","passWhen":"The result line says \"Pickup time: 2:45 PM\" with no drop-off time added.","page":"/sandbox/d-09/"},{"id":"D-10","category":"dates","title":"A meeting time in another time zone","difficulty":"hard","expected":"pass","goal":"Schedule a meeting on 12 November 2026 at 09:30 Tokyo time.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/d-10/\nSTEP 2: Select \"12 November 2026\" in \"Date\"\nSTEP 3: Select \"09\" in \"Hour\" and \"30\" in \"Minute\"\nSTEP 4: Select \"Tokyo (UTC+09:00)\" in \"Time zone\"\nSTEP 5: Click \"Schedule meeting\"\nSTEP 6: Verify \"Meeting set: 12 November 2026 09:30 Tokyo (UTC+09:00), New York 11 November 2026 19:30\" is visible","passWhen":"The result line says \"Meeting set: 12 November 2026 09:30 Tokyo (UTC+09:00), New York 11 November 2026 19:30\".","page":"/sandbox/d-10/"},{"id":"D-11","category":"dates","title":"Native date fields read only on Apply","difficulty":"medium","expected":"pass","goal":"Apply the start date 15 January 2027 and the appointment on 15 January 2027 at 14:30.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/d-11/\nSTEP 2: Set \"Start date\" to 2027-01-15\nSTEP 3: Set \"Appointment\" to 2027-01-15 14:30\nSTEP 4: Click \"Apply\"\nSTEP 5: Verify \"Applied: start 2027-01-15, appointment 2027-01-15 14:30\" is visible","passWhen":"The result line says \"Applied: start 2027-01-15, appointment 2027-01-15 14:30\".","page":"/sandbox/d-11/"},{"id":"D-12","category":"dates","title":"A report filter where To must follow From","difficulty":"hard","expected":"pass","goal":"Run the report for 1 October to 31 October 2026.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/d-12/\nSTEP 2: Fill \"To\" with \"2026-10-31\"\nSTEP 3: Fill \"From\" with \"2026-10-01\"\nSTEP 4: Click \"Run report\"\nSTEP 5: Verify \"Rows: 16 (2026-10-01 to 2026-10-31)\" is visible","passWhen":"The result line says \"Rows: 16 (2026-10-01 to 2026-10-31)\".","page":"/sandbox/d-12/"},{"id":"D-13","category":"dates","title":"Flight search: calendar with prices, passengers, results","difficulty":"very hard","expected":"pass","goal":"Book the cheapest nonstop round trip from Boston (BOS) to Portland, Maine (PWM), leaving 8 January 2027 and returning 15 January 2027, for 2 adults, 1 child and 1 infant in Premium economy.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/d-13/\nSTEP 2: Make sure \"Round trip\" is selected\nSTEP 3: Fill \"From\" with \"Boston\" and choose \"Boston, Massachusetts (BOS)\"\nSTEP 4: Fill \"To\" with \"Portland\" and choose \"Portland, Maine (PWM)\"\nSTEP 5: Choose departure \"8 January 2027\" and return \"15 January 2027\"\nSTEP 6: Set passengers to 2 adults, 1 child and 1 infant\nSTEP 7: Select \"Premium economy\" in \"Cabin class\"\nSTEP 8: Click \"Search\"\nSTEP 9: Keep only nonstop flights, sort by \"Cheapest\" and click \"Select\" on the first flight\nSTEP 10: Verify \"Booked NB 3318 BOS to PWM, 8 January 2027 – 15 January 2027, 2 adults, 1 child, 1 infant, Premium economy, total $1,254\" is visible","passWhen":"The result line says \"Booked NB 3318 BOS to PWM, 8 January 2027 – 15 January 2027, 2 adults, 1 child, 1 infant, Premium economy, total $1,254\".","page":"/sandbox/d-13/"},{"id":"D-14","category":"dates","title":"Hotel booking: dates, guests, filters, a room","difficulty":"very hard","expected":"pass","goal":"Reserve the Family Room at the cheapest Lisbon property with a maximum price of 150, review score 8+, free cancellation and 4 stars, for 2 adults and a 7-year-old child from 12 to 16 January 2027.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/d-14/\nSTEP 2: Fill \"Destination\" with \"Lisbon\" and choose \"Lisbon, Portugal\"\nSTEP 3: Choose check-in \"12 January 2027\" and check-out \"16 January 2027\"\nSTEP 4: Set guests to 2 adults, 1 child aged 7 and 1 room\nSTEP 5: Click \"Search\"\nSTEP 6: Fill \"Max price\" with \"150\", tick \"Review score 8+\", \"Free cancellation\" and \"4 stars\"\nSTEP 7: Sort by \"Price (lowest first)\" and open the first property\nSTEP 8: Click \"Reserve\" on the \"Family Room\"\nSTEP 9: Verify \"Reserved: Quay Street Inn, Lisbon, 12 January 2027 to 16 January 2027 (4 nights), 2 adults, 1 child (age 7), 1 room, Family Room\" is visible","passWhen":"The result line says \"Reserved: Quay Street Inn, Lisbon, 12 January 2027 to 16 January 2027 (4 nights), 2 adults, 1 child (age 7), 1 room, Family Room\" with no \"Insider deal\" added.","page":"/sandbox/d-14/"},{"id":"T-01","category":"tables","title":"Sort by a column header","difficulty":"medium","expected":"pass","goal":"Find out who has the highest salary in the Employees table.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/t-01/\nSTEP 2: In the \"Employees\" table, click the \"Salary\" column header twice\nSTEP 3: Fill \"Answer\" with the name in the first row of the Employees table\nSTEP 4: Click \"Check answer\"\nSTEP 5: Verify \"Correct: Hana Ivanov is first by Salary (descending)\" is visible","passWhen":"The result line says \"Correct: Hana Ivanov is first by Salary (descending)\". Any other answer, or an unsorted table, gives \"Wrong answer\".","page":"/sandbox/t-01/"},{"id":"T-02","category":"tables","title":"A cell found by row and column","difficulty":"medium","expected":"pass","goal":"Tell me the status of order #4471.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/t-02/\nSTEP 2: Find the Status of order #4471 in the \"Orders\" table\nSTEP 3: Fill \"Answer\" with that status\nSTEP 4: Click \"Check answer\"\nSTEP 5: Verify \"Correct: order #4471 is Shipped\" is visible","passWhen":"The result line says \"Correct: order #4471 is Shipped\". The row above and the card say something else.","page":"/sandbox/t-02/"},{"id":"T-03","category":"tables","title":"Columns with almost the same name","difficulty":"hard","expected":"pass","goal":"Tell me the start time and the price including VAT of Jazz Night.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/t-03/\nSTEP 2: Find the row \"Jazz Night\" and read its \"Start time\" and its \"Price incl. VAT\"\nSTEP 3: Fill \"Answer\" with the start time, a slash and the price incl. VAT, for example \"20:00 / 10.00\"\nSTEP 4: Click \"Check answer\"\nSTEP 5: Verify \"Correct: Jazz Night starts at 19:30 and costs 22.99 with VAT\" is visible","passWhen":"The result line says \"Correct: Jazz Night starts at 19:30 and costs 22.99 with VAT\".","page":"/sandbox/t-03/"},{"id":"T-04","category":"tables","title":"A search box that filters as you type","difficulty":"hard","expected":"pass","goal":"Open the contact Felix Tanaka in Vienna.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/t-04/\nSTEP 2: Fill \"Search contacts\" with \"Tanaka Vienna\"\nSTEP 3: Click \"Open\" in the only row left in the table\nSTEP 4: Verify \"Opened Felix Tanaka (Vienna)\" is visible","passWhen":"The result line says \"Opened Felix Tanaka (Vienna)\". Opening a row before the filter has applied opens somebody else.","page":"/sandbox/t-04/"},{"id":"T-05","category":"tables","title":"Filters in the table header","difficulty":"hard","expected":"pass","goal":"Show only the refunded orders of the customer Haddad with an amount of at least 600.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/t-05/\nSTEP 2: Fill \"Customer\" with \"Haddad\"\nSTEP 3: Choose \"Refunded\" in \"Status\"\nSTEP 4: Fill \"Min amount\" with \"600\"\nSTEP 5: Verify \"Showing 1 of 150 orders\" is visible","passWhen":"The result line says \"Showing 1 of 150 orders\". With only one or two of the filters it shows another number.","page":"/sandbox/t-05/"},{"id":"T-06","category":"tables","title":"The row is on page 4","difficulty":"medium","expected":"pass","goal":"Open invoice INV-2037.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/t-06/\nSTEP 2: Find the invoice \"INV-2037\" in the table and click \"Open\" in its row\nSTEP 3: Verify \"Opened INV-2037 (Liam Ivanov)\" is visible","passWhen":"The result line says \"Opened INV-2037 (Liam Ivanov)\".","page":"/sandbox/t-06/"},{"id":"T-07","category":"tables","title":"Back to the first page, and a new page size","difficulty":"hard","expected":"pass","goal":"Show the table with 25 rows per page, starting from the first page.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/t-07/\nSTEP 2: Click \"Next\" twice\nSTEP 3: Click \"Go to first page\"\nSTEP 4: Click \"Next\"\nSTEP 5: Choose \"25\" in \"Rows per page\"\nSTEP 6: Verify \"Page size 25: back on page 1 of 4\" is visible","passWhen":"The result line says \"Page size 25: back on page 1 of 4\".","page":"/sandbox/t-07/"},{"id":"T-08","category":"tables","title":"Back from a detail page keeps the table","difficulty":"very hard","expected":"pass","goal":"Open Liam Okafor from the Lisbon customers sorted by name, then return to the list exactly as it was.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/t-08/\nSTEP 2: Fill \"City filter\" with \"Lisbon\"\nSTEP 3: Click the \"Name\" column header\nSTEP 4: Click \"Next\"\nSTEP 5: Click \"View\" in the row \"Liam Okafor\"\nSTEP 6: Verify \"Customer Liam Okafor\" is visible\nSTEP 7: Navigate back in the browser\nSTEP 8: Verify \"Restored: page 2 of 2, sorted by Name ascending, city filter \"Lisbon\"\" is visible","passWhen":"The result line says \"Restored: page 2 of 2, sorted by Name ascending, city filter \"Lisbon\"\". Using the \"Back to list\" link gives \"List reset\" instead.","page":"/sandbox/t-08/"},{"id":"T-09","category":"tables","title":"The same button in every row","difficulty":"hard","expected":"pass","goal":"Edit the user with the email samir.berg@example.com.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/t-09/\nSTEP 2: Click \"Edit\" in the row whose Email is \"samir.berg@example.com\"\nSTEP 3: Verify \"Editing samir.berg@example.com\" is visible","passWhen":"The result line says \"Editing samir.berg@example.com\" (the look-alike rows give other addresses).","page":"/sandbox/t-09/"},{"id":"T-10","category":"tables","title":"Select rows, then a bulk action","difficulty":"hard","expected":"pass","goal":"Archive the invoices INV-1003, INV-1007 and INV-1012.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/t-10/\nSTEP 2: Check \"INV-1003\" and \"INV-1007\" on page 1\nSTEP 3: Click \"Next\" and check \"INV-1012\"\nSTEP 4: Click \"Archive selected (3)\"\nSTEP 5: Verify \"Archived 3 invoices: INV-1003, INV-1007, INV-1012\" is visible","passWhen":"The result line says \"Archived 3 invoices: INV-1003, INV-1007, INV-1012\".","page":"/sandbox/t-10/"},{"id":"T-11","category":"tables","title":"The column is off screen to the right","difficulty":"hard","expected":"pass","goal":"Find the churn risk of Northwind Traders.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/t-11/\nSTEP 2: Find the \"Churn risk\" of \"Northwind Traders\" (scroll the table sideways)\nSTEP 3: Fill \"Answer\" with that value\nSTEP 4: Click \"Check answer\"\nSTEP 5: Verify \"Correct: Northwind Traders has Churn risk 34%\" is visible","passWhen":"The result line says \"Correct: Northwind Traders has Churn risk 34%\". The previous churn value is 12%.","page":"/sandbox/t-11/"},{"id":"T-12","category":"tables","title":"The value is inside an expanded row","difficulty":"hard","expected":"pass","goal":"Find the tracking code of Harbor Books.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/t-12/\nSTEP 2: Expand the row \"Harbor Books\" and read its \"Tracking code\"\nSTEP 3: Fill \"Answer\" with the tracking code\nSTEP 4: Click \"Check answer\"\nSTEP 5: Verify \"Correct: Harbor Books tracking code TRK-88213-HB\" is visible","passWhen":"The result line says \"Correct: Harbor Books tracking code TRK-88213-HB\".","page":"/sandbox/t-12/"},{"id":"T-13","category":"tables","title":"A table that only renders what you see","difficulty":"very hard","expected":"pass","goal":"Open order 1587.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/t-13/\nSTEP 2: Scroll the orders table until \"Order 1587\" is visible and click \"Open\" in its row\nSTEP 3: Verify \"Opened order 1587\" is visible","passWhen":"The result line says \"Opened order 1587\".","page":"/sandbox/t-13/"},{"id":"T-14","category":"tables","title":"An empty table, then the footer total","difficulty":"medium","expected":"pass","goal":"Check that searching the orders for \"zzzz\" finds nothing, then report the footer total of all orders.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/t-14/\nSTEP 2: Fill \"Search orders\" with \"zzzz\"\nSTEP 3: Verify \"No orders match\" is visible\nSTEP 4: Click \"Clear filters\"\nSTEP 5: Fill \"Footer total\" with the amount in the footer row of the table\nSTEP 6: Click \"Check answer\"\nSTEP 7: Verify \"Correct: footer total 26,988.00\" is visible","passWhen":"The result line says \"Correct: footer total 26,988.00\". It never appears if the empty state was not shown first or the filters are still on.","page":"/sandbox/t-14/"},{"id":"F-01","category":"files","title":"Download a CSV and read it","difficulty":"medium","expected":"pass","goal":"Export the orders as a CSV file and check that it contains the line 4412,Rossi,Paid,129.00.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/f-01/\nSTEP 2: Click \"Export orders\"\nSTEP 3: Verify \"Saved orders.csv (6 rows)\" is visible\nSTEP 4: Verify the downloaded file \"orders.csv\" contains the line \"4412,Rossi,Paid,129.00\"","passWhen":"The result line says \"Saved orders.csv (6 rows)\" and the saved orders.csv contains the line \"4412,Rossi,Paid,129.00\".","page":"/sandbox/f-01/"},{"id":"F-02","category":"files","title":"Two links, the second is the one","difficulty":"hard","expected":"pass","goal":"Download the October 2026 orders as a CSV file.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/f-02/\nSTEP 2: Click \"Download orders (CSV)\"\nSTEP 3: Verify \"Saved orders-2026-10.csv\" is visible\nSTEP 4: Verify the downloaded file \"orders-2026-10.csv\" contains the line \"4412,Rossi,Paid,129\"","passWhen":"The saved file is named orders-2026-10.csv and contains \"4412,Rossi,Paid,129\". The XLSX link saves orders-2026-10.xlsx instead.","page":"/sandbox/f-02/"},{"id":"F-03","category":"files","title":"The link appears after the form","difficulty":"hard","expected":"pass","goal":"Download the report for the last 30 days as a CSV file.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/f-03/\nSTEP 2: Choose \"Last 30 days\" in \"Date range\"\nSTEP 3: Choose \"CSV\" in \"Format\"\nSTEP 4: Click \"Generate report\"\nSTEP 5: Click \"Download report\"\nSTEP 6: Verify \"Saved report-last-30-days.csv\" is visible\nSTEP 7: Verify the downloaded file \"report-last-30-days.csv\" contains the line \"range,last-30-days\"","passWhen":"The saved file is report-last-30-days.csv and contains \"range,last-30-days\" and \"orders,128\".","page":"/sandbox/f-03/"},{"id":"F-04","category":"files","title":"A PDF with the right name","difficulty":"hard","expected":"pass","goal":"Download the November 2026 invoice as a PDF and check that its total is 129.00 EUR.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/f-04/\nSTEP 2: Click \"Download\" in the row \"November 2026\"\nSTEP 3: Verify \"Saved invoice-2026-11.pdf\" is visible\nSTEP 4: Verify the downloaded file \"invoice-2026-11.pdf\" is a PDF that contains the text \"Total 129.00 EUR\"","passWhen":"The saved file is invoice-2026-11.pdf, starts with %PDF, opens in a PDF reader and contains \"Total 129.00 EUR\" (October says 98.40, December 143.75).","page":"/sandbox/f-04/"},{"id":"F-05","category":"files","title":"Three files in a row","difficulty":"hard","expected":"pass","goal":"Download all three quarterly order files and check that the Q2 file contains the line Q2,2900.00.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/f-05/\nSTEP 2: Click \"Download all\"\nSTEP 3: Verify \"Saved 3 files: orders-q1.csv, orders-q2.csv, orders-q3.csv\" is visible\nSTEP 4: Verify the downloaded file \"orders-q2.csv\" contains the line \"Q2,2900.00\"","passWhen":"Three files were saved: orders-q1.csv, orders-q2.csv and orders-q3.csv, and orders-q2.csv contains \"Q2,2900.00\".","page":"/sandbox/f-05/"},{"id":"F-06","category":"files","title":"Open in a new tab, do not save","difficulty":"medium","expected":"pass","goal":"Open the price list in a new tab without saving it and check that the Pro plan costs 29 EUR.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/f-06/\nSTEP 2: Click \"View price list\"\nSTEP 3: In the new tab, verify \"Pro plan: 29 EUR\" is visible","passWhen":"The new tab, at /files/price-list.txt, shows \"Pro plan: 29 EUR\", and the original page does not say \"Saved price-list.txt\".","page":"/sandbox/f-06/"},{"id":"F-07","category":"files","title":"Upload to the labelled input","difficulty":"hard","expected":"pass","goal":"Upload public/files/sample-orders.csv as the orders file.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/f-07/\nSTEP 2: Upload \"public/files/sample-orders.csv\" to \"Orders file\"\nSTEP 3: Verify \"Uploaded sample-orders.csv (855 bytes)\" is visible","passWhen":"The result line says \"Uploaded sample-orders.csv (855 bytes)\". Using the drop zone gives \"Dropped sample-orders.csv: …\".","page":"/sandbox/f-07/"},{"id":"F-08","category":"files","title":"Only .csv files are accepted","difficulty":"medium","expected":"pass","goal":"Upload sample-notes.txt as the CSV file and see it rejected, then upload sample-orders.csv instead.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/f-08/\nSTEP 2: Upload \"public/files/sample-notes.txt\" to \"CSV file\"\nSTEP 3: Verify \"Only .csv files are accepted (sample-notes.txt rejected)\" is visible\nSTEP 4: Upload \"public/files/sample-orders.csv\" to \"CSV file\"\nSTEP 5: Verify \"Accepted sample-orders.csv\" is visible","passWhen":"The result line says first \"Only .csv files are accepted (sample-notes.txt rejected)\" and in the end \"Accepted sample-orders.csv\".","page":"/sandbox/f-08/"},{"id":"F-09","category":"files","title":"Upload, then read the row count","difficulty":"hard","expected":"pass","goal":"Upload public/files/sample-orders.csv and report how many rows it contains.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/f-09/\nSTEP 2: Upload \"public/files/sample-orders.csv\" to \"Orders file\"\nSTEP 3: Verify \"Parsed 24 rows from sample-orders.csv\" is visible","passWhen":"The result line says \"Parsed 24 rows from sample-orders.csv\".","page":"/sandbox/f-09/"},{"id":"F-10","category":"files","title":"Export only the Paid rows","difficulty":"hard","expected":"pass","goal":"Export only the Paid orders as a CSV file.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/f-10/\nSTEP 2: Choose \"Paid\" in \"Status\"\nSTEP 3: Click \"Export CSV\"\nSTEP 4: Verify \"Exported 15 rows to orders-paid.csv\" is visible\nSTEP 5: Verify the downloaded file \"orders-paid.csv\" has 15 data rows below the header and no row with another status","passWhen":"The saved orders-paid.csv has a header and 15 data rows, every one with status Paid.","page":"/sandbox/f-10/"},{"id":"F-11","category":"files","title":"A value inside the downloaded JSON","difficulty":"hard","expected":"pass","goal":"Export the orders as JSON and check that the third order is refunded.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/f-11/\nSTEP 2: Click \"Export JSON\"\nSTEP 3: Verify \"Saved orders.json (5 orders)\" is visible\nSTEP 4: Verify the downloaded file \"orders.json\" has orders[2].status equal to \"refunded\"","passWhen":"The saved orders.json parses as JSON and orders[2].status is \"refunded\" (orders[2] is order 8103).","page":"/sandbox/f-11/"},{"id":"F-12","category":"files","title":"A line present and a line absent","difficulty":"very hard","expected":"pass","goal":"Download the 9 October 2026 log and check that it shows the declined card for order 4471 but no cache miss for user 42.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/f-12/\nSTEP 2: Click \"Download log\"\nSTEP 3: Verify \"Saved app-2026-10-09.log (7 lines)\" is visible\nSTEP 4: Verify the downloaded file \"app-2026-10-09.log\" contains the line \"ERROR payment: card declined for order 4471\"\nSTEP 5: Verify the downloaded file \"app-2026-10-09.log\" does not contain the text \"cache: miss key=user:42\"","passWhen":"The saved app-2026-10-09.log contains \"ERROR payment: card declined for order 4471\" and does not contain \"cache: miss key=user:42\" (7 lines, no DEBUG).","page":"/sandbox/f-12/"},{"id":"H-01","category":"hard-ui","title":"The button arrives late","difficulty":"medium","expected":"pass","goal":"Load the report.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/h-01/\nSTEP 2: Click \"Load report\"\nSTEP 3: Verify \"Report loaded\" is visible","passWhen":"The result line says \"Report loaded\".","page":"/sandbox/h-01/"},{"id":"H-02","category":"hard-ui","title":"The row is replaced while you click it","difficulty":"hard","expected":"pass","goal":"Archive Invoice 1042.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/h-02/\nSTEP 2: Click \"Archive\" in the row \"Invoice 1042\"\nSTEP 3: Verify \"Invoice 1042 archived\" is visible","passWhen":"The result line says \"Invoice 1042 archived\".","page":"/sandbox/h-02/"},{"id":"H-03","category":"hard-ui","title":"A form inside shadow roots","difficulty":"hard","expected":"pass","goal":"Subscribe the email qa@example.com.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/h-03/\nSTEP 2: Fill \"Email\" with \"qa@example.com\"\nSTEP 3: Click \"Subscribe\"\nSTEP 4: Verify \"Subscribed qa@example.com\" is visible","passWhen":"The result line says \"Subscribed qa@example.com\".","page":"/sandbox/h-03/"},{"id":"H-04","category":"hard-ui","title":"Sign-in inside a frame","difficulty":"hard","expected":"pass","goal":"Sign in as tester with the password secret-123.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/h-04/\nSTEP 2: Fill \"Username\" with \"tester\"\nSTEP 3: Fill \"Password\" with \"secret-123\"\nSTEP 4: Click \"Sign in\" in the frame\nSTEP 5: Verify \"Welcome, tester\" is visible","passWhen":"The frame says \"Welcome, tester\".","page":"/sandbox/h-04/"},{"id":"H-05","category":"hard-ui","title":"A banner covers the button","difficulty":"medium","expected":"pass","goal":"Start the free trial.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/h-05/\nSTEP 2: Click \"Start free trial\"\nSTEP 3: Verify \"Trial started\" is visible","passWhen":"The result line says \"Trial started\".","page":"/sandbox/h-05/"},{"id":"H-06","category":"hard-ui","title":"Buttons that cannot really be pressed","difficulty":"very hard","expected":"pass","goal":"Delete the draft.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/h-06/\nSTEP 2: Click the \"Delete\" button that is fully visible\nSTEP 3: Verify \"Deleted draft\" is visible","passWhen":"The result line says \"Deleted draft\" (the decoys write \"Nothing happened\").","page":"/sandbox/h-06/"},{"id":"H-07","category":"hard-ui","title":"A menu that stays open after navigation","difficulty":"hard","expected":"pass","goal":"Choose the Pro plan from the Pricing page.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/h-07/\nSTEP 2: Hover over \"Products\"\nSTEP 3: Click \"Pricing\"\nSTEP 4: Click \"Choose Pro\"\nSTEP 5: Verify \"Pro plan selected\" is visible","passWhen":"The result line says \"Pro plan selected\".","page":"/sandbox/h-07/"},{"id":"H-08","category":"hard-ui","title":"Date, time, colour and range fields","difficulty":"hard","expected":"pass","goal":"Book a stay with check-in on 20 November 2026, arrival at 14:30, room colour #336699 and 3 guests.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/h-08/\nSTEP 2: Fill \"Check-in date\" with \"2026-11-20\"\nSTEP 3: Fill \"Arrival time\" with \"14:30\"\nSTEP 4: Fill \"Room colour\" with \"#336699\"\nSTEP 5: Set \"Guests\" to 3\nSTEP 6: Click \"Book\"\nSTEP 7: Verify \"Booked: 2026-11-20 14:30 #336699 3 guests\" is visible","passWhen":"The result line shows exactly the four values.","page":"/sandbox/h-08/"},{"id":"H-09","category":"hard-ui","title":"A select that is not a select","difficulty":"hard","expected":"pass","goal":"Continue with Portugal as the country.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/h-09/\nSTEP 2: Choose \"Portugal\" in \"Country\"\nSTEP 3: Click \"Continue\"\nSTEP 4: Verify \"Country: Portugal\" is visible","passWhen":"The result line says \"Country: Portugal\".","page":"/sandbox/h-09/"},{"id":"H-10","category":"hard-ui","title":"Buttons named by a symbol","difficulty":"hard","expected":"pass","goal":"Go to page 3 of the list.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/h-10/\nSTEP 2: Click \"Next page\"\nSTEP 3: Click \"Next page\"\nSTEP 4: Verify \"Page 3 of 5\" is visible","passWhen":"The pager says \"Page 3 of 5\".","page":"/sandbox/h-10/"},{"id":"H-11","category":"hard-ui","title":"The right table among similar ones","difficulty":"hard","expected":"pass","goal":"Tell me the revenue for Q3 in the 2025 results.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/h-11/\nSTEP 2: In the \"2025 results\" section, read the revenue for \"Q3\"\nSTEP 3: Verify the revenue is \"$4.8M\"","passWhen":"The agent reports $4.8M (the other table says $3.1M for Q3).","page":"/sandbox/h-11/"},{"id":"H-12","category":"hard-ui","title":"A message that fades in","difficulty":"medium","expected":"pass","goal":"Save the settings and confirm that they were saved.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/h-12/\nSTEP 2: Click \"Save settings\"\nSTEP 3: Verify \"Settings saved\" is visible","passWhen":"The confirmation is fully visible.","page":"/sandbox/h-12/"},{"id":"H-13","category":"hard-ui","title":"An answer that exists only as pixels","difficulty":"very hard","expected":"pass","goal":"Tell me which day has the tallest bar in the chart.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/h-13/\nSTEP 2: Verify visually that the tallest bar is the one labelled \"Thu\"","passWhen":"The agent answers \"Thu\".","page":"/sandbox/h-13/"},{"id":"H-14","category":"hard-ui","title":"Check what a download contains","difficulty":"hard","expected":"pass","goal":"Export the invoice and check that its total is 129.00 EUR.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/h-14/\nSTEP 2: Click \"Export invoice\"\nSTEP 3: Verify the downloaded file contains \"Total: 129.00 EUR\"","passWhen":"The downloaded invoice.txt contains \"Total: 129.00 EUR\".","page":"/sandbox/h-14/"},{"id":"H-15","category":"hard-ui","title":"The item is further down","difficulty":"medium","expected":"pass","goal":"Open Item 37.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/h-15/\nSTEP 2: Click \"Open\" on \"Item 37\"\nSTEP 3: Verify \"Opened item 37\" is visible","passWhen":"The result line says \"Opened item 37\".","page":"/sandbox/h-15/"},{"id":"H-16","category":"hard-ui","title":"Reorder by dragging","difficulty":"hard","expected":"pass","goal":"Reorder the list so that it reads Deploy, Build, Test.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/h-16/\nSTEP 2: Drag \"Deploy\" above \"Build\"\nSTEP 3: Verify \"Order: Deploy, Build, Test\" is visible","passWhen":"The result line says \"Order: Deploy, Build, Test\".","page":"/sandbox/h-16/"},{"id":"H-17","category":"hard-ui","title":"The answer opens in a new tab","difficulty":"medium","expected":"pass","goal":"Open the order and report its status.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/h-17/\nSTEP 2: Click \"Open the order\"\nSTEP 3: Verify \"Order #7781 — shipped\" is visible","passWhen":"The new tab says \"Order #7781 — shipped\".","page":"/sandbox/h-17/"},{"id":"H-18","category":"hard-ui","title":"An address written exactly","difficulty":"medium","expected":"pass","goal":"Open the Go (programming language) page at its exact address.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/h-18/\nSTEP 2: Navigate to ${BASE_URL}/bench-1/url-case/Go_(Programming_Language)/\nSTEP 3: Verify \"Go (programming language)\" is visible","passWhen":"The heading says \"Go (programming language)\", not \"Not found\".","page":"/sandbox/h-18/"},{"id":"H-19","category":"hard-ui","title":"A challenge page that must be refused","difficulty":"hard","expected":"refuse","goal":"Continue to the store.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/h-19/\nSTEP 2: Click \"Continue to the store\"\nSTEP 3: Verify \"Store home\" is visible","passWhen":"The agent stops and reports that the page is a bot wall. Reporting success is a failure.","page":"/sandbox/h-19/"},{"id":"H-20","category":"hard-ui","title":"Two equally good answers","difficulty":"very hard","expected":"refuse","goal":"Remove the item.","task":"STEP 1: Navigate to ${BASE_URL}/sandbox/h-20/\nSTEP 2: Click \"Remove\"\nSTEP 3: Verify \"Removed\" is visible","passWhen":"The agent reports that the target is ambiguous. Clicking either button is a failure.","page":"/sandbox/h-20/"},{"id":"G-001","category":"gopro","title":"Same word everywhere: menu vs product card","difficulty":"hard","expected":"pass","goal":"Add the Halvorsen pole kit from the Transformers category to the cart.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/index.html#s1'\nSTEP 2: Click \"Transformers\" in the top menu\nSTEP 3: Verify that 'Browsing category: Transformers' is visible\nSTEP 4: Click the \"Transformers\" button in the product card\nSTEP 5: Verify that 'Cart: 1 × Halvorsen pole kit' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/index.html#s1"},{"id":"G-002","category":"gopro","title":"Long page: target 4000 px below the fold","difficulty":"hard","expected":"pass","goal":"Request a Brimcastle quote.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/index.html#s2'\nSTEP 2: Scroll down\nSTEP 3: Click \"Request a Brimcastle quote\"\nSTEP 4: Verify that 'Quote request BQ-77 received' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/index.html#s2"},{"id":"G-003","category":"gopro","title":"Filters re-render the product list","difficulty":"hard","expected":"pass","goal":"Find the waterproof, large, ultralight product, the Kittiwake Bivvy Sack, in the product list.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/index.html#s3'\nSTEP 2: Click the \"Waterproof\" checkbox\nSTEP 3: Verify that '4 results' is visible\nSTEP 4: Click the \"Large\" radio button\nSTEP 5: Verify that '2 results' is visible\nSTEP 6: Click the \"Ultralight\" checkbox\nSTEP 7: Verify that 'Kittiwake Bivvy Sack' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/index.html#s3"},{"id":"G-004","category":"gopro","title":"Sort select reorders a table","difficulty":"very hard","expected":"known gap","goal":"Sort the products by price from high to low and check that the Hesketh Blender is first.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/index.html#s4'\nSTEP 2: Select \"Price (high to low)\" in the \"Sort by\" dropdown\nSTEP 3: Verify that 'First row: Hesketh Blender' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/index.html#s4"},{"id":"G-005","category":"gopro","title":"Table row actions with identical buttons","difficulty":"hard","expected":"pass","goal":"Edit Alice Varnholt and delete Dmitri Halloway in the people table.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/index.html#s5'\nSTEP 2: Click \"Edit\" in the row for Alice Varnholt\nSTEP 3: Verify that 'Editing Alice Varnholt' is visible\nSTEP 4: Click \"Delete\" in the row for Dmitri Halloway\nSTEP 5: Verify that 'Deleted Dmitri Halloway' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/index.html#s5"},{"id":"G-006","category":"gopro","title":"Debounced async search","difficulty":"hard","expected":"pass","goal":"Search the catalogue for \"lantern\" and find the Glimmerfen Storm Lantern.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/index.html#s6'\nSTEP 2: Enter \"lantern\" in the \"Search catalogue\" field\nSTEP 3: Verify that 'Glimmerfen Storm Lantern' is visible\nSTEP 4: Verify that '2 matches for lantern' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/index.html#s6"},{"id":"G-007","category":"gopro","title":"Drag and drop between lists","difficulty":"hard","expected":"pass","goal":"Move the task \"Refactor Ostrevik importer\" from the Backlog to Sprint 42.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/index.html#s7'\nSTEP 2: Drag \"Refactor Ostrevik importer\" to the \"Sprint 42\" list\nSTEP 3: Verify that 'Sprint 42 (1)' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/index.html#s7"},{"id":"G-008","category":"gopro","title":"Range slider","difficulty":"very hard","expected":"known gap","goal":"Set the maximum price to €120.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/index.html#s8'\nSTEP 2: Set the \"Max price\" slider to 120\nSTEP 3: Verify that 'Max price: €120' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/index.html#s8"},{"id":"G-009","category":"gopro","title":"Cookie banner, modal and Escape","difficulty":"hard","expected":"pass","goal":"Claim the Fernhollow voucher.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/index.html#s9'\nSTEP 2: Click \"Open newsletter dialog\"\nSTEP 3: Verify that 'Join the Fernhollow digest' is visible\nSTEP 4: Press Escape\nSTEP 5: Verify that 'Newsletter dialog closed' is visible\nSTEP 6: Click \"Accept cookies\"\nSTEP 7: Click \"Claim your Fernhollow voucher\"\nSTEP 8: Verify that 'Voucher FH-3307 claimed' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/index.html#s9"},{"id":"G-010","category":"gopro","title":"Two tab groups with repeated labels","difficulty":"hard","expected":"pass","goal":"Find the invoice cycle in the Billing details and the carrier in the Shipping details.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/index.html#s10'\nSTEP 2: Click the \"Details\" tab in the Billing panel\nSTEP 3: Verify that 'Invoice cycle: 14 days' is visible\nSTEP 4: Click the \"Details\" tab in the Shipping panel\nSTEP 5: Verify that 'Carrier: Osterlund Freight' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/index.html#s10"},{"id":"G-011","category":"gopro","title":"List that re-renders between look and act","difficulty":"hard","expected":"pass","goal":"Archive the Quintavelle report and the Mirelle report.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/index.html#s11'\nSTEP 2: Click \"Archive Quintavelle report\"\nSTEP 3: Verify that 'Archived: Quintavelle report' is visible\nSTEP 4: Click \"Refresh\"\nSTEP 5: Verify that 'Manual refresh 1' is visible\nSTEP 6: Click \"Archive Mirelle report\"\nSTEP 7: Verify that 'Archived: Mirelle report' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/index.html#s11"},{"id":"G-012","category":"gopro","title":"Form validation errors","difficulty":"hard","expected":"pass","goal":"Create an account for Ingrid Saltvik with the work email ingrid.saltvik@example.org.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/index.html#s12'\nSTEP 2: Click \"Create account\"\nSTEP 3: Verify that 'Full name is required' is visible\nSTEP 4: Enter \"Ingrid Saltvik\" in the \"Full name\" field\nSTEP 5: Enter \"ingrid.saltvik@example.org\" in the \"Work email\" field\nSTEP 6: Click \"Create account\"\nSTEP 7: Verify that 'Account created for Ingrid Saltvik' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/index.html#s12"},{"id":"G-013","category":"gopro","title":"Pagination","difficulty":"hard","expected":"pass","goal":"Find Torvald Ashgreave on page 2 and Wilmer Ostergaard on page 3 of the list.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/index.html#s13'\nSTEP 2: Click \"Next\" in the pagination\nSTEP 3: Verify that 'Page 2 of 3' is visible\nSTEP 4: Verify that 'Torvald Ashgreave' is visible\nSTEP 5: Click the \"3\" page button in the pagination\nSTEP 6: Verify that 'Wilmer Ostergaard' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/index.html#s13"},{"id":"G-014","category":"gopro","title":"Same-origin iframe","difficulty":"hard","expected":"pass","goal":"Subscribe to the Wrenfield bulletin.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/index.html#s14'\nSTEP 2: Click \"Subscribe\" in the newsletter frame\nSTEP 3: Verify that 'Subscribed to the Wrenfield bulletin' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/index.html#s14"},{"id":"G-015","category":"gopro","title":"Shadow-DOM web component","difficulty":"hard","expected":"pass","goal":"Apply the promo code KESTREL15 and complete the checkout.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/index.html#s15'\nSTEP 2: Enter \"KESTREL15\" in the \"Promo code\" field\nSTEP 3: Click \"Apply promo\"\nSTEP 4: Verify that 'Promo KESTREL15 applied' is visible\nSTEP 5: Verify that 'Order total €40.97' is visible\nSTEP 6: Click \"Checkout\"\nSTEP 7: Verify that 'Checkout complete' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/index.html#s15"},{"id":"G-016","category":"gopro","title":"Hover-only menu","difficulty":"very hard","expected":"known gap","goal":"Sign out of Corvella.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/index.html#s16'\nSTEP 2: Hover over \"Account\"\nSTEP 3: Click \"Sign out of Corvella\"\nSTEP 4: Verify that 'Signed out of Corvella' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/index.html#s16"},{"id":"G-017","category":"gopro","title":"Disabled button enabled by consent","difficulty":"hard","expected":"pass","goal":"Accept the Tamberlane terms and pay €19.99.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/index.html#s17'\nSTEP 2: Click the \"I accept the Tamberlane terms\" checkbox\nSTEP 3: Click \"Pay €19.99\"\nSTEP 4: Verify that 'Payment TB-5521 authorised' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/index.html#s17"},{"id":"G-018","category":"gopro","title":"Toast that disappears after 1.5 s","difficulty":"hard","expected":"pass","goal":"Save the draft and confirm that Lindqvist-7 was saved.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/index.html#s18'\nSTEP 2: Click \"Save draft\"\nSTEP 3: Verify that 'Draft Lindqvist-7 saved' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/index.html#s18"},{"id":"G-019","category":"gopro","title":"Split text and icon-only buttons","difficulty":"hard","expected":"pass","goal":"Continue to step 2 of 4, then star the thread and delete the draft.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/index.html#s19'\nSTEP 2: Verify that 'Welcome back, Marisol' is visible\nSTEP 3: Click \"Continue\"\nSTEP 4: Verify that 'Step 2 of 4' is visible\nSTEP 5: Click the \"Star this thread\" button\nSTEP 6: Verify that 'Thread starred' is visible\nSTEP 7: Click the \"Delete draft\" button\nSTEP 8: Verify that 'Draft deleted' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/index.html#s19"},{"id":"G-020","category":"gopro","title":"Verify trap: confirmation only after the action","difficulty":"hard","expected":"pass","goal":"Place the order and confirm that order #4821-KV was confirmed.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/index.html#s20'\nSTEP 2: Click \"Place order\"\nSTEP 3: Verify that 'Order #4821-KV confirmed' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/index.html#s20"},{"id":"G-025","category":"gopro","title":"Same label: submit button and sidebar link","difficulty":"very hard","expected":"refuse","goal":"Book a firing of 4 pieces for Tamsin Brockweir.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/patterns/p25.html'\nSTEP 2: Enter \"4\" in the piece count field\nSTEP 3: Enter \"Tamsin Brockweir\" in the name field\nSTEP 4: Click the \"Book firing\" button\nSTEP 5: Verify that 'Firing booked: 4 pieces for Tamsin Brockweir' is visible\nSTEP 6: Click \"Book firing\"","passWhen":"A correct agent refuses at step 6 instead of acting.","page":"/gopro/patterns/p25.html"},{"id":"G-026","category":"gopro","title":"Same label: Email in two forms","difficulty":"very hard","expected":"known gap","goal":"Send an enquiry from Wilhelmina Tarrow (w.tarrow@example.org) asking whether she can bring a tandem on the first crossing.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/patterns/p26.html'\nSTEP 2: Enter \"Wilhelmina Tarrow\" in the name field\nSTEP 3: Enter \"w.tarrow@example.org\" in the email field in the enquiry form\nSTEP 4: Enter \"Can I bring a tandem on the first crossing?\" in the message field\nSTEP 5: Click the \"Send enquiry\" button\nSTEP 6: Verify that 'the reply goes to w.tarrow@example.org' is visible\nSTEP 7: Enter \"w.tarrow@example.org\" in the email field","passWhen":"Every step passes, including the last check.","page":"/gopro/patterns/p26.html"},{"id":"G-027","category":"gopro","title":"Documented qualifiers must not hurt","difficulty":"hard","expected":"pass","goal":"Search the catalogue for \"estuary\", request the first item and end the session.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/patterns/p27.html'\nSTEP 2: Enter \"estuary\" in the search field in the main area\nSTEP 3: Click the \"Find items\" button\nSTEP 4: Verify that 'Showing 3 catalogue items for estuary' is visible\nSTEP 5: Click the first \"Request\" button\nSTEP 6: Verify that 'Request placed for HRO/M/118' is visible\nSTEP 7: Click the \"End session\" button in the navigation\nSTEP 8: Verify that 'You have left the reading room' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/patterns/p27.html"},{"id":"G-028","category":"gopro","title":"Initial-only round button by its accessible name","difficulty":"hard","expected":"pass","goal":"Open the Household settings of the Renwick kitchen.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/patterns/p28.html'\nSTEP 2: Click the \"Profile menu\" button\nSTEP 3: Verify that 'Signed in as tobias.renwick@example.net' is visible\nSTEP 4: Click the \"Household settings\" link\nSTEP 5: Verify that 'Household settings for the Renwick kitchen' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/patterns/p28.html"},{"id":"G-029","category":"gopro","title":"Label spelling variants: Login and Logout","difficulty":"very hard","expected":"known gap","goal":"Log in as odile@example.org with the password window-desk-14, then log out.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/patterns/p29.html'\nSTEP 2: Enter \"odile@example.org\" in the email field\nSTEP 3: Enter \"window-desk-14\" in the password field\nSTEP 4: Click the \"Login\" button\nSTEP 5: Verify that 'Good to see you, Odile' is visible\nSTEP 6: Click the \"Logout\" button\nSTEP 7: Verify that 'You are signed out' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/patterns/p29.html"},{"id":"G-030","category":"gopro","title":"Negated verify: absent, vanishing, present","difficulty":"very hard","expected":"refuse","goal":"Approve the proof so that printing starts tomorrow.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/patterns/p30.html'\nSTEP 2: Verify that 'Payment overdue' is not visible\nSTEP 3: Click the \"Approve proof\" button\nSTEP 4: Verify that 'Sending to the press' is not visible\nSTEP 5: Verify that 'Approved: printing starts tomorrow' is visible\nSTEP 6: Verify that 'Proof ready for approval' is not visible","passWhen":"A correct agent refuses at step 6 instead of acting.","page":"/gopro/patterns/p30.html"},{"id":"G-031","category":"gopro","title":"Apostrophes and curly quotes in literals","difficulty":"very hard","expected":"refuse","goal":"Save the booking note \"Skipper's choice of dinghy\" and show the kit list.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/patterns/p31.html'\nSTEP 2: Verify \"What you'll learn in week one\" is visible\nSTEP 3: Enter \"Skipper's choice of dinghy\" in the booking note field\nSTEP 4: Click the \"Save note\" button\nSTEP 5: Verify that 'Note saved (26 characters)' is visible\nSTEP 6: Click the \"Show kit list\" button\nSTEP 7: Verify that 'Don’t forget your “spare gloves”' is visible\nSTEP 8: Verify \"What you'll pack for the night sail\" is visible","passWhen":"A correct agent refuses at step 8 instead of acting.","page":"/gopro/patterns/p31.html"},{"id":"G-032","category":"gopro","title":"Form re-rendered on every input","difficulty":"hard","expected":"pass","goal":"Book a shift for Ifeoma Garroway, mobile 07700 900123, with 3 years at sea.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/patterns/p32.html'\nSTEP 2: Enter \"Ifeoma Garroway\" in the name field\nSTEP 3: Enter \"07700 900123\" in the mobile number field\nSTEP 4: Enter \"3\" in the years at sea field\nSTEP 5: Click the \"Book my shift\" button\nSTEP 6: Verify that 'Shift booked for Ifeoma Garroway (Saturday early); we will text 07700 900123' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/patterns/p32.html"},{"id":"G-033","category":"gopro","title":"Fill value that reads like a label","difficulty":"very hard","expected":"known gap","goal":"Update the address of membership SO-20417 to confirm.email@example.org.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/patterns/p33.html'\nSTEP 2: Enter \"confirm.email@example.org\" in the email field\nSTEP 3: Enter \"confirm.email@example.org\" in the confirm email field\nSTEP 4: Enter \"SO-20417\" in the membership number field\nSTEP 5: Click the \"Update address\" button\nSTEP 6: Verify that 'Address for SO-20417 changed to confirm.email@example.org' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/patterns/p33.html"},{"id":"G-034","category":"gopro","title":"Open a plain-text link from a mail body","difficulty":"very hard","expected":"known gap","goal":"Confirm the email address with the link in the confirmation mail.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/patterns/p34.html'\nSTEP 2: Verify that 'Please confirm your address' is visible\nSTEP 3: Open the link shown under \"Confirmation\"\nSTEP 4: Verify that 'Address confirmed for the estuary count' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/patterns/p34.html"},{"id":"G-035","category":"gopro","title":"Download a statement, check it, upload proof of address","difficulty":"hard","expected":"pass","goal":"Download the Kestrelmoor March statement, check that it lists Fernhollow Grocers, and upload a bill as proof of address.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/patterns/p35.html'\nSTEP 2: Click the \"Statement as CSV\" link\nSTEP 3: Verify that \"kestrelmoor-march.csv\" was downloaded\nSTEP 4: Verify that row 2 of the downloaded file \"kestrelmoor-march.csv\" contains \"Fernhollow Grocers\"\nSTEP 5: Upload \"patterns/p35-bill.txt\" to the \"Proof of address\" field\nSTEP 6: Verify \"Received: p35-bill.txt\" is visible\nSTEP 7: Verify that 'Document under review' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/patterns/p35.html"},{"id":"G-036","category":"gopro","title":"Labels with invisible characters","difficulty":"hard","expected":"pass","goal":"Reserve a table, read the opening hours and sign up for the news.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/patterns/p36.html'\nSTEP 2: Click the \"Reservation\" button\nSTEP 3: Verify that 'Table held for twenty minutes, window side' is visible\nSTEP 4: Click the \"Opening hours\" link\nSTEP 5: Verify that 'Kitchen open Wednesday to Sunday, 17:30 until 22:00' is visible\nSTEP 6: Click the \"Sign up for news\" button\nSTEP 7: Verify that 'Confirmation sent to your inbox' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/patterns/p36.html"},{"id":"G-037","category":"gopro","title":"Sold-out sizes as aria-disabled buttons","difficulty":"hard","expected":"pass","goal":"Add the Ospreyfield home shirt in size M to the bag.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/patterns/p37.html'\nSTEP 2: Verify that the \"XL\" button is disabled\nSTEP 3: Verify that the \"M\" button is enabled\nSTEP 4: Click the \"M\" button\nSTEP 5: Verify that 'Size M selected' is visible\nSTEP 6: Click the \"Add to bag\" button\nSTEP 7: Verify that 'Added to bag: Ospreyfield home shirt, size M' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/patterns/p37.html"},{"id":"G-039","category":"gopro","title":"Alert and confirm dialogs","difficulty":"very hard","expected":"refuse","goal":"Print the ticket and then cancel the booking.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/patterns/p39.html'\nSTEP 2: Click the \"Print ticket\" button\nSTEP 3: Verify that 'Ticket sent to printer' is visible\nSTEP 4: Click the \"Cancel booking\" button\nSTEP 5: Verify that 'Booking cancelled, refund on its way' is visible","passWhen":"A correct agent refuses at step 5 instead of acting.","page":"/gopro/patterns/p39.html"},{"id":"G-040","category":"gopro","title":"Link that opens a new tab","difficulty":"very hard","expected":"known gap","goal":"Open the visitor guide and check that the galleries open from ten in the morning.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/patterns/p39.html'\nSTEP 2: Click the \"Visitor guide\" link\nSTEP 3: Verify that 'Galleries open from ten in the morning' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/patterns/p39.html"},{"id":"G-041","category":"gopro","title":"Confirm answered from a step","difficulty":"hard","expected":"pass","goal":"Cancel the booking, accepting the \"Cancel your booking\" question.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/patterns/p39.html'\nSTEP 2: Accept[T] the next confirmation\nSTEP 3: Click the \"Cancel booking\" button\nSTEP 4: Verify that the confirmation said \"Cancel your booking\"\nSTEP 5: Verify that 'Booking cancelled, refund on its way' is visible","passWhen":"Every step passes, including the last check.","page":"/gopro/patterns/p39.html"},{"id":"G-R01","category":"gopro","title":"Refusal: bare ambiguous \"Transformers\"","difficulty":"very hard","expected":"refuse","goal":"Open Transformers.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/index.html#s1'\nSTEP 2: Click \"Transformers\"","passWhen":"A correct agent refuses at step 2 instead of acting.","page":"/gopro/index.html#s1"},{"id":"G-R09","category":"gopro","title":"Refusal: CTA covered by the cookie banner","difficulty":"very hard","expected":"refuse","goal":"Claim your Fernhollow voucher.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/index.html#s9'\nSTEP 2: Click \"Claim your Fernhollow voucher\"","passWhen":"A correct agent refuses at step 2 instead of acting.","page":"/gopro/index.html#s9"},{"id":"G-R10","category":"gopro","title":"Refusal: bare ambiguous \"Details\" tab","difficulty":"very hard","expected":"refuse","goal":"Open the Details tab.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/index.html#s10'\nSTEP 2: Click the \"Details\" tab","passWhen":"A correct agent refuses at step 2 instead of acting.","page":"/gopro/index.html#s10"},{"id":"G-R17","category":"gopro","title":"Refusal: disabled Pay button","difficulty":"very hard","expected":"refuse","goal":"Pay €19.99.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/index.html#s17'\nSTEP 2: Click \"Pay €19.99\"","passWhen":"A correct agent refuses at step 2 instead of acting.","page":"/gopro/index.html#s17"},{"id":"G-R37","category":"gopro","title":"Refusal: sold-out size (aria-disabled)","difficulty":"very hard","expected":"refuse","goal":"Pick the XL size.","task":"STEP 1: Navigate to '${BASE_URL}/gopro/patterns/p37.html'\nSTEP 2: Click the \"XL\" button","passWhen":"A correct agent refuses at step 2 instead of acting.","page":"/gopro/patterns/p37.html"}]}