Files
jina-ai--reader/tests/e2e/browser-options.test.ts
wehub-resource-sync f1ba9c6c36
/ test (push) Failing after 1s
/ build-and-push-to-ghcr (push) Has been skipped
chore: import upstream snapshot with attribution
2026-07-13 12:23:39 +08:00

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);
});
});