92 lines
3.0 KiB
TypeScript
92 lines
3.0 KiB
TypeScript
/**
|
|
* E2E tests for browser-related crawler options:
|
|
* timeout / viewport / engine / respondTiming
|
|
*/
|
|
import { describe, it } from 'node:test';
|
|
import assert from 'node:assert';
|
|
import { crawl, crawlWithHeaders } from '../helpers/client';
|
|
|
|
describe('timeout', () => {
|
|
it('accepts timeout within valid range (1-180)', async () => {
|
|
const res = await crawl({ timeout: 30 });
|
|
assert.strictEqual(res.status, 200);
|
|
assert.notStrictEqual(res.body.data.content, undefined);
|
|
});
|
|
|
|
it('accepts maximum timeout of 180', async () => {
|
|
const res = await crawl({ timeout: 180 });
|
|
assert.strictEqual(res.status, 200);
|
|
});
|
|
|
|
it('X-Timeout header is accepted', async () => {
|
|
const res = await crawlWithHeaders({ 'X-Timeout': '60' });
|
|
assert.strictEqual(res.status, 200);
|
|
});
|
|
});
|
|
|
|
describe('viewport', () => {
|
|
it('accepts viewport with width and height', async () => {
|
|
const res = await crawl({ viewport: { width: 1920, height: 1080 } });
|
|
assert.strictEqual(res.status, 200);
|
|
assert.notStrictEqual(res.body.data.content, undefined);
|
|
});
|
|
|
|
it('accepts viewport with mobile configuration', async () => {
|
|
const res = await crawl({
|
|
viewport: { width: 375, height: 812, isMobile: true, hasTouch: true },
|
|
});
|
|
assert.strictEqual(res.status, 200);
|
|
});
|
|
|
|
it('accepts viewport with deviceScaleFactor', async () => {
|
|
const res = await crawl({
|
|
viewport: { width: 1280, height: 720, deviceScaleFactor: 2 },
|
|
});
|
|
assert.strictEqual(res.status, 200);
|
|
});
|
|
});
|
|
|
|
describe('engine', () => {
|
|
it('engine: auto is accepted', async () => {
|
|
const res = await crawl({ engine: 'auto' });
|
|
assert.strictEqual(res.status, 200);
|
|
});
|
|
|
|
it('engine: browser is accepted', async () => {
|
|
const res = await crawl({ engine: 'browser' });
|
|
assert.strictEqual(res.status, 200);
|
|
});
|
|
|
|
it('engine: curl is accepted', async () => {
|
|
const res = await crawl({ engine: 'curl' });
|
|
assert.strictEqual(res.status, 200);
|
|
});
|
|
|
|
it('X-Engine header is accepted', async () => {
|
|
const res = await crawlWithHeaders({ 'X-Engine': 'auto' });
|
|
assert.strictEqual(res.status, 200);
|
|
});
|
|
});
|
|
|
|
describe('respondTiming', () => {
|
|
it('respondTiming: html is accepted', async () => {
|
|
const res = await crawl({ respondTiming: 'html' });
|
|
assert.strictEqual(res.status, 200);
|
|
});
|
|
|
|
it('respondTiming: visible-content is accepted', async () => {
|
|
const res = await crawl({ respondTiming: 'visible-content' });
|
|
assert.strictEqual(res.status, 200);
|
|
});
|
|
|
|
it('respondTiming: resource-idle is accepted', async () => {
|
|
const res = await crawl({ respondTiming: 'resource-idle' });
|
|
assert.strictEqual(res.status, 200);
|
|
});
|
|
|
|
it('X-Respond-Timing header is accepted', async () => {
|
|
const res = await crawlWithHeaders({ 'X-Respond-Timing': 'html' });
|
|
assert.strictEqual(res.status, 200);
|
|
});
|
|
});
|