UNPKG

stable-chromium

Version:

A library to install stable Chromium for testing via Gauge and Taiko

105 lines (91 loc) 3.67 kB
const extract = require('extract-zip'); const fs = require('fs'); const path = require('path'); const config = require('./config.json'); let Chrome_URL = config.Chrome_URL; if (Chrome_URL.startsWith('\\') && !Chrome_URL.startsWith('\\\\')) { Chrome_URL = '\\' + Chrome_URL; console.log(`Преобразованный UNC-путь: ${Chrome_URL}`); } const DOWNLOAD_PATH = path.resolve(config.DOWNLOAD_PATH); const EXTRACT_PATH = path.resolve(config.EXTRACT_PATH); function ensureDirExists(dir) { if (!fs.existsSync(dir)) { fs.mkdirSync(dir, { recursive: true }); console.log(`Создана директория: ${dir}`); } } async function downloadChrome() { console.log('Начало копирования Chrome из сети...'); if (!Chrome_URL) { console.error('Ошибка: Chrome_URL не задан в config.'); throw new Error('Chrome_URL не задан'); } if (!fs.existsSync(Chrome_URL)) { console.error(`Ошибка: исходный файл не найден по пути ${Chrome_URL}`); throw new Error('Исходный файл не найден'); } ensureDirExists(path.dirname(DOWNLOAD_PATH)); return new Promise((resolve, reject) => { const readStream = fs.createReadStream(Chrome_URL); const writer = fs.createWriteStream(DOWNLOAD_PATH); readStream.on('error', (err) => { console.error('Ошибка при чтении исходного файла:', err); reject(err); }); writer.on('error', (err) => { console.error('Ошибка при записи файла:', err); reject(err); }); writer.on('finish', () => { console.log('Копирование завершено.'); resolve(); }); readStream.pipe(writer); }); } async function extractChrome() { console.log('Начало распаковки Chrome...'); if (!fs.existsSync(DOWNLOAD_PATH)) { console.error(`Ошибка: архив не найден по пути ${DOWNLOAD_PATH}`); throw new Error('Архив не найден'); } ensureDirExists(EXTRACT_PATH); try { await extract(DOWNLOAD_PATH, { dir: EXTRACT_PATH }); console.log('Распаковка завершена.'); try { fs.unlinkSync(DOWNLOAD_PATH); console.log('Архив удалён после распаковки.'); } catch (unlinkError) { console.error('Ошибка при удалении архива:', unlinkError); } } catch (error) { console.error('Ошибка при распаковке Chrome:', error); throw error; } } async function installChrome() { console.log('Начало установки Chrome...'); try { await downloadChrome(); } catch (error) { console.error('Установка прервана на этапе копирования.'); return; } try { await extractChrome(); } catch (error) { console.error('Установка прервана на этапе распаковки.'); return; } console.log('Chrome успешно установлен!'); } if (require.main === module) { installChrome().catch(err => { console.error('Необработанная ошибка установки:', err); }); } module.exports = { install: installChrome };