@splode/obake
Version:
Check merchants for deals.
44 lines (33 loc) • 1.16 kB
text/typescript
import puppeteer, { Browser } from "puppeteer";
import { parsePrice } from "../../../src/strings";
describe("The Best Buy merchant checker", () => {
jest.setTimeout(3e4);
let browser: Browser;
beforeAll(async () => {
browser = await puppeteer.launch({ headless: false });
});
afterAll(async () => {
await browser.close();
});
test("fetches the price for a given app URL", async () => {
const url = new URL(
"https://www.bestbuy.com/site/amazon-echo-dot-4th-gen-smart-speaker-with-clock-and-alexa-glacier-white/6430059.p?skuId=6430059"
);
const sku = url.searchParams.get("skuId");
const page = await browser.newPage();
await page.goto(url.href, {
waitUntil: "networkidle2",
});
const priceString = await page.$eval(
`[data-skuid='${sku}'] .priceView-customer-price > span`,
(el) => el.textContent
);
const cartText = await page.$eval(
".add-to-cart-button",
(el) => el.textContent
);
await Promise.all([priceString, cartText]);
expect(typeof priceString).toBe("string");
expect(typeof parsePrice(String(priceString))).toBe("number");
});
});