Для работы с Puppeteer на TypeScript необходимо создать проект с правильно настроенной средой. Этот процесс включает в себя установку необходимых пакетов, настройку конфигурации и интеграцию TypeScript с Puppeteer.
Создание нового проекта начинается с инициализации npm-пакета. Это позволит задать все необходимые зависимости.
npm init -y
После выполнения этой команды будет создан файл
package.json, который будет содержать основную информацию о
проекте.
Для работы с Puppeteer и TypeScript нужно установить несколько ключевых зависимостей:
Установка зависимостей:
npm install puppeteer
npm install typescript @types/puppeteer --save-dev
Для того чтобы TypeScript правильно компилировал код, нужно создать файл
конфигурации tsconfig.json. Этот файл описывает настройки
компилятора и важные параметры для проекта.
Создание tsconfig.json можно выполнить вручную или с
помощью команды:
npx tsc --init
После этого нужно отредактировать файл tsconfig.json для
соответствия требованиям Puppeteer:
{
"compilerOptions": {
"target": "ES6",
"module": "CommonJS",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"outDir": "./dist",
"rootDir": "./src"
},
"include": [
"src/**/*.ts"
]
}
Объяснение ключевых настроек:
ES6 позволяет
использовать современные возможности JavaScript, такие как
async/await.
CommonJS.
import для совместимости с CommonJS модулями.
Структура проекта должна быть логичной и соответствовать стандартам TypeScript.
Пример структуры проекта:
/my-puppeteer-project
/src
index.ts
/dist
package.json
tsconfig.json
После настройки TypeScript и установки всех зависимостей, можно перейти к написанию самого первого скрипта, который будет запускать браузер и делать элементарные действия.
Пример кода для файла src/index.ts:
import puppeteer from &
async function run() { const browser = await puppeteer.launch();
const page = await browser.newPage(); await
page.goto('https://example.com'); await page.screenshot({ path:
'example.png' }); await browser.close(); }
run().catch(console.error);
Этот код открывает браузер, переходит на сайт example.com,
делает скриншот и сохраняет его в файл example.png.
Чтобы компилировать TypeScript в JavaScript, нужно использовать команду:
npx tsc
Это скомпилирует все файлы в папку dist (в соответствии с
настройками в tsconfig.json).
Теперь можно запустить скомпилированный файл JavaScript с помощью Node.js:
node dist/index.js
Чтобы ускорить процесс разработки, можно настроить автокомпиляцию
TypeScript с помощью утилиты ts-node или использовать
команду tsc –watch для автоматической компиляции файлов при
изменении.
Для установки ts-node:
npm install ts-node --save-dev
Для запуска скрипта с ts-node:
npx ts-node src/index.ts
Для включения автокомпиляции через tsc:
npx tsc --watch
Теперь TypeScript будет автоматически компилировать файлы при их изменении.
Для улучшения качества кода и соблюдения стандартов кодирования рекомендуется настроить ESLint и Prettier.
Установка зависимостей:
npm install eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin --save-dev
npm install prettier eslint-config-prettier eslint-plugin-prettier --save-dev
После этого можно создать конфигурационные файлы
.eslintrc.json и .prettierrc, чтобы настроить
линтинг и форматирование.
Пример конфигурации .eslintrc.json:
{
"parser": "@typescript-eslint/parser",
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:prettier/recommended"
],
"env": {
"node": true,
"es2021": true
},
"rules": {
"@typescript-eslint/no-explicit-any": "warn",
"@typescript-eslint/explicit-module-boundary-types": "off"
}
}
Пример конфигурации .prettierrc:
{
"semi": true,
"singleQuote": true,
"trailingComma": "all"
}
После настройки окружения и написания базовых скриптов, можно использовать Puppeteer для тестирования интерфейсов. Например, можно автоматизировать проверку, что на странице присутствуют определенные элементы, проверить их текст или сделать скриншот страницы для последующего сравнения.
Пример теста:
import puppeteer from 'puppeteer';
describe('Puppeteer Test', () => { let browser; let page;
beforeAll(async () => { browser = await puppeteer.launch(); page =
await browser.newPage(); });
afterAll(async () => { await browser.close(); });
test('should load the correct page', async () => { await
page.goto('https://example.com'); const title = await page.title();
expect(title).toBe('Example Domain'); }); });
Этот тест с использованием Jest проверяет, что при переходе на сайт
example.com, его заголовок соответствует ожидаемому
значению.
Типовая настройка проекта с использованием Puppeteer и TypeScript включает в себя установку зависимостей, настройку конфигурации компилятора и создание структуры проекта. После этого можно начинать писать тесты и автоматизировать взаимодействие с браузером. Важно также использовать современные инструменты для улучшения качества кода, такие как ESLint и Prettier, для соблюдения стандартов и повышения читабельности.