// Solution by Ethan Ruszanowski const { chromium } = require("playwright"); async function sortHackerNewsArticles() { // launch browser const browser = await chromium.launch({ headless: false }); const context = await browser.newContext(); const page = await context.newPage(); // go to Hacker News await page.goto("https://news.ycombinator.com/newest"); // instantiate array for all date objects let datestamps = []; // loop through process per page for (var pageview = 0; pageview <= 3; pageview++) { // locate each article's age span let datespans = await page.locator(".age").all(); // iterate through date spans to get timestamps for (row = 0; row < datespans.length; row++) { // turn timestamp strings into date objects and push to array datestamps.push(new Date(await datespans[row].getAttribute("title"))); } // click the next button as needed await page.getByRole("link", { name: "More", exact: true }).click(); } // drop extra array elements datestamps.splice(100, 20); // check if the website dates are sorted and report results if (datestamps === datestamps.sort()) { console.log( "Success! The first 100 articles are correctly sorted by posting time.", ); } else { console.log( "Failureā€¦ The first 100 articles are not correctly sorted by posting time.", ); } } (async () => { await sortHackerNewsArticles(); })();