В контексте автоматизированного тестирования под артефактами понимаются любые данные, создаваемые в процессе выполнения тестов, которые могут быть использованы для анализа, отладки и отчётности. К артефактам относятся: логи, скриншоты, видео прохождения тестов, отчёты о результатах, дампы состояния браузера, файлы с данными окружения и т.д. Управление этими артефактами критически важно для поддерживаемости тестового процесса, особенно при масштабировании проектов и интеграции с CI/CD.
Protractor использует Node.js и интегрируется с Jasmine, Mocha и
другими фреймворками для тестирования. Хранение артефактов начинается с
правильной настройки protractor.conf.js. Основные параметры
включают:
Папка для отчётов:
capabilities: {
browserName: 'chrome'
},
onPrepare: function() {
browser.manage().window().maximize();
jasmine.getEnv().addReporter(new jasmine.Reporter({
savePath: './test-results/'
}));
}Настройка логов браузера:
capabilities: {
browserName: 'chrome',
loggingPrefs: {
browser: 'ALL',
driver: 'ALL'
}
}
Логи можно сохранять в отдельный файл, используя Node.js модуль
fs.
Генерация скриншотов при падении теста:
afterEach(async function() {
if (this.currentTest.state === 'failed') {
const png = await browser.takeScreenshot();
const stream = require('fs').createWriteStream(`./screenshots/${this.currentTest.title}.png`);
stream.write(Buffer.from(png, 'base64'));
stream.end();
}
});Структура директорий Для упрощения поиска и анализа артефактов рекомендуется организовать директории по типу данных и дате выполнения:
test-results/
2026-01-07/
logs/
screenshots/
reports/Именование файлов Имена файлов должны быть информативными, включать имя теста, браузер и timestamp:
login-test_chrome_2026-01-07T12-30-45.pngОчистка старых артефактов Для поддержания чистоты проекта автоматизируют удаление устаревших файлов:
const fs = require('fs');
const path = './test-results/';
fs.readdirSync(path).forEach(file => {
if (fs.statSync(path + file).isDirectory()) {
// Удаление директорий старше 7 дней
}
});Для командной работы и непрерывной интеграции артефакты должны быть доступны после каждого запуска тестов:
Jenkins: настройка архивирования артефактов через Post-build Actions.
GitLab CI/CD: указание artifacts в
.gitlab-ci.yml:
artifacts:
paths:
- test-results/
expire_in: 1 weekAllure: интеграция с Jasmine или Mocha позволяет визуализировать скриншоты и логи в красивых отчётах:
const { JasmineAllureReporter } = require('allure-jasmine');
jasmine.getEnv().addReporter(new JasmineAllureReporter({
resultsDir: 'allure-results'
}));Скриншоты только для критичных шагов: уменьшает объем хранимых данных и ускоряет CI.
Сжатие артефактов: ZIP или GZIP для длительного хранения.
Сохранение состояния браузера: возможность записи cookies, localStorage и sessionStorage для воспроизведения багов.
const fs = require('fs');
const storage = await browser.executeScript('return window.localStorage;');
fs.writeFileSync('./test-results/storage.json', JSON.stringify(storage));Отчёты о производительности: при необходимости можно сохранять метрики загрузки страниц и времени отклика.
Ключевым аспектом управления артефактами является баланс между полнотой информации и размером хранилища. Систематическая организация, именование файлов, интеграция с CI/CD и автоматическая очистка устаревших данных позволяют ускорить анализ результатов тестирования, повысить надёжность тестового окружения и облегчить отладку багов.
Хорошо структурированные артефакты создают основу для масштабируемой и поддерживаемой системы автоматизированного тестирования на Protractor.