@authless/puppeteer-extra-plugin-har
Version:
> This is a plugin for [puppeteer-extra](https://github.com/berstend/puppeteer-extra) that allows you to create a HAR file from your page.
89 lines • 4.82 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const src_1 = __importDefault(require("../src"));
const puppeteer_extra_1 = require("puppeteer-extra");
const puppeteer_1 = __importDefault(require("puppeteer"));
const puppeteer = puppeteer_extra_1.addExtra(puppeteer_1.default);
describe('puppeteer-extra-plugin-har', () => {
describe('single page', () => {
test('it creates HAR file correctly [Page Closed]', () => __awaiter(void 0, void 0, void 0, function* () {
/* eslint-disable-next-line no-empty-function */
const callback = jest.fn(() => __awaiter(void 0, void 0, void 0, function* () { }));
puppeteer.use(src_1.default({ callback }));
const browser = yield puppeteer.launch({ headless: true });
const page = yield browser.newPage();
yield page.goto('http://example.com', { waitUntil: 'domcontentloaded' });
yield page.close();
yield browser.close();
expect(callback.mock.calls.length).toBe(1);
}));
test('it creates HAR file correctly [Browser Closed]', () => __awaiter(void 0, void 0, void 0, function* () {
/* eslint-disable-next-line no-empty-function */
const callback = jest.fn(() => __awaiter(void 0, void 0, void 0, function* () { }));
puppeteer.use(src_1.default({ callback }));
const browser = yield puppeteer.launch({ headless: true });
const page = yield browser.newPage();
yield page.goto('http://example.com', { waitUntil: 'domcontentloaded' });
yield browser.close();
expect(callback.mock.calls.length).toBe(1);
}));
});
describe('multiple pages', () => {
test('it creates HAR files with unique IDs', () => __awaiter(void 0, void 0, void 0, function* () {
/* eslint-disable-next-line no-empty-function */
const callback = jest.fn(() => __awaiter(void 0, void 0, void 0, function* () { }));
puppeteer.use(src_1.default({ callback }));
const browser = yield puppeteer.launch({ headless: true });
const urls = [
'https://example.com',
'https://example.com',
'https://en.wikipedia.org/wiki/URL'
];
yield Promise.all(urls.map((url) => __awaiter(void 0, void 0, void 0, function* () {
const page = yield browser.newPage();
yield page.goto(url, { waitUntil: 'domcontentloaded' });
yield page.close();
})));
yield browser.close();
const calls = callback.mock.calls;
expect(calls.length).toBe(3);
const harIds = calls.map((call) => call[1].harId);
expect((new Set(harIds)).size).toBe(3);
}));
});
describe('multiple browsers', () => {
test('it creates HAR files with unique IDs', () => __awaiter(void 0, void 0, void 0, function* () {
/* eslint-disable-next-line no-empty-function */
const callback = jest.fn(() => __awaiter(void 0, void 0, void 0, function* () { }));
puppeteer.use(src_1.default({ callback }));
const urls = [
'https://example.com',
'https://example.com',
];
yield Promise.all(urls.map((url) => __awaiter(void 0, void 0, void 0, function* () {
const browser = yield puppeteer.launch({ headless: true });
const page = yield browser.newPage();
yield page.goto(url, { waitUntil: 'domcontentloaded' });
yield page.close();
yield browser.close();
})));
const calls = callback.mock.calls;
expect(calls.length).toBe(2);
const harIds = calls.map((call) => call[1].harId);
expect((new Set(harIds)).size).toBe(2);
}));
});
});
//# sourceMappingURL=test.spec.js.map