test: puppeteer

This commit is contained in:
DIYgod 2024-01-31 02:37:50 +08:00
parent 40de7c111a
commit 97607f5079
No known key found for this signature in database
1 changed files with 10 additions and 2 deletions

View File

@ -1,6 +1,5 @@
import { describe, expect, it, jest, afterEach } from '@jest/globals';
import wait from '../../lib/utils/wait';
import puppeteer from '../../lib/utils/puppeteer';
import { type Browser } from 'puppeteer';
let browser: Browser | null = null;
@ -24,6 +23,7 @@ afterEach(() => {
describe('puppeteer', () => {
it('puppeteer run', async () => {
const { default: puppeteer } = await import('../../lib/utils/puppeteer');
browser = await puppeteer();
const startTime = Date.now();
const page = await browser.newPage();
@ -45,6 +45,7 @@ describe('puppeteer', () => {
if (!process.env.GITHUB_ACTIONS) {
it('puppeteer without stealth', async () => {
const { default: puppeteer } = await import('../../lib/utils/puppeteer');
browser = await puppeteer({ stealth: false });
const page = await browser.newPage();
await page.goto('https://bot.sannysoft.com', { waitUntil: 'networkidle0' });
@ -57,6 +58,7 @@ describe('puppeteer', () => {
}, 15000);
it('puppeteer with stealth', async () => {
const { default: puppeteer } = await import('../../lib/utils/puppeteer');
browser = await puppeteer({ stealth: true });
const page = await browser.newPage();
await page.goto('https://bot.sannysoft.com', { waitUntil: 'networkidle0' });
@ -71,16 +73,17 @@ describe('puppeteer', () => {
it('puppeteer accept http proxy uri w/ auth', async () => {
process.env.PROXY_URI = 'http://user:pass@rsshub.proxy:2333';
const { default: puppeteer } = await import('../../lib/utils/puppeteer');
browser = await puppeteer();
// trailing slash will cause net::ERR_NO_SUPPORTED_PROXIES, prohibit it
console.log(browser.process()?.spawnargs);
expect(browser.process()?.spawnargs.some((arg) => /^--proxy-server=http:\/\/.*[^/]$/.test(arg))).toBe(true);
});
it('puppeteer reject https proxy uri w/ auth', async () => {
process.env.PROXY_URI = 'https://user:pass@rsshub.proxy:2333';
const { default: puppeteer } = await import('../../lib/utils/puppeteer');
browser = await puppeteer();
expect(browser.process()?.spawnargs.some((arg) => arg.includes('--proxy-server'))).toBe(false);
@ -89,6 +92,7 @@ describe('puppeteer', () => {
it('puppeteer reject socks proxy uri w/ auth', async () => {
process.env.PROXY_URI = 'socks5://user:pass@rsshub.proxy:2333';
const { default: puppeteer } = await import('../../lib/utils/puppeteer');
browser = await puppeteer();
expect(browser.process()?.spawnargs.some((arg) => arg.includes('--proxy-server'))).toBe(false);
@ -99,6 +103,7 @@ describe('puppeteer', () => {
process.env.PROXY_HOST = 'rsshub.proxy';
process.env.PROXY_PORT = '2333';
const { default: puppeteer } = await import('../../lib/utils/puppeteer');
browser = await puppeteer();
expect(browser.process()?.spawnargs.some((arg) => /^--proxy-server=http:\/\/rsshub.proxy:2333$/.test(arg))).toBe(true);
@ -109,6 +114,7 @@ describe('puppeteer', () => {
process.env.PROXY_HOST = 'rsshub.proxy';
process.env.PROXY_PORT = '2333';
const { default: puppeteer } = await import('../../lib/utils/puppeteer');
browser = await puppeteer();
expect(browser.process()?.spawnargs.some((arg) => /^--proxy-server=https:\/\/rsshub.proxy:2333$/.test(arg))).toBe(true);
@ -119,6 +125,7 @@ describe('puppeteer', () => {
process.env.PROXY_HOST = 'rsshub.proxy';
process.env.PROXY_PORT = '2333';
const { default: puppeteer } = await import('../../lib/utils/puppeteer');
browser = await puppeteer();
expect(browser.process()?.spawnargs.some((arg) => /^--proxy-server=socks4:\/\/rsshub.proxy:2333$/.test(arg))).toBe(true);
@ -129,6 +136,7 @@ describe('puppeteer', () => {
process.env.PROXY_HOST = 'rsshub.proxy';
process.env.PROXY_PORT = '2333';
const { default: puppeteer } = await import('../../lib/utils/puppeteer');
browser = await puppeteer();
expect(browser.process()?.spawnargs.some((arg) => /^--proxy-server=socks5:\/\/rsshub.proxy:2333$/.test(arg))).toBe(true);