Protractor является фреймворком для end-to-end тестирования приложений на Angular и других веб-приложениях. Для успешной интеграции с Jenkins необходимо настроить окружение так, чтобы тесты могли выполняться автоматически в непрерывной интеграции.
Для работы Protractor требуется Node.js. Установка выполняется через
официальный сайт или менеджер пакетов nvm. После установки
Node.js необходимо установить Protractor глобально:
npm install -g protractor
После установки обновляется WebDriver:
webdriver-manager update
WebDriver обеспечивает управление браузерами для выполнения тестов.
Конфигурационный файл Protractor (protractor.conf.js)
содержит информацию о браузерах, тестах и параметрах выполнения.
Основные элементы:
Пример минимальной конфигурации:
exports.config = {
framework: 'jasmine',
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['tests/*.spec.js'],
capabilities: {
browserName: 'chrome'
},
jasmineNodeOpts: {
defaultTimeoutInterval: 30000
}
};
Для запуска тестов Protractor в Jenkins необходимо подготовить:
Если тесты выполняются на удалённом сервере, важно обеспечить графический режим или использовать headless-режим браузера:
capabilities: {
browserName: 'chrome',
chromeOptions: {
args: ['--headless', '--disable-gpu', '--window-size=1920,1080']
}
}
Использование Jenkins Pipeline позволяет гибко управлять этапами сборки и тестирования. Пример декларативного Pipeline:
pipeline {
agent any
environment {
NODEJS_HOME = tool name: 'NodeJS 18', type: 'NodeJS'
PATH = "${NODEJS_HOME}/bin:${env.PATH}"
}
stages {
stage('Install dependencies') {
steps {
sh 'npm install'
sh 'webdriver-manager update'
}
}
stage('Run Protractor tests') {
steps {
sh 'protractor protractor.conf.js'
}
}
}
post {
always {
junit 'reports/*.xml'
archiveArtifacts artifacts: 'reports/*.xml', allowEmptyArchive: true
}
}
}
В этом примере:
Для анализа результатов тестов рекомендуется использовать генерацию XML-отчётов через Jasmine Reporter или Allure:
const JasmineReporters = require('jasmine-reporters');
exports.config = {
onPrepare: function() {
jasmine.getEnv().addReporter(new JasmineReporters.JUnitXmlReporter({
savePath: 'reports',
consolidateAll: false
}));
}
};
С Jenkins эти отчёты можно подключить через Publish JUnit test result report, что позволяет визуализировать успехи и падения тестов.
Protractor поддерживает параллельное выполнение тестов через
настройку multiCapabilities или
shardTestFiles:
capabilities: {
browserName: 'chrome',
shardTestFiles: true,
maxInstances: 2
}
Это позволяет запускать несколько тестов одновременно, ускоряя общий цикл тестирования, особенно при большом наборе e2e-тестов.
Для полной изоляции окружения можно использовать контейнеры Docker:
FROM node:18
RUN npm install -g protractor
RUN webdriver-manager update
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["protractor", "protractor.conf.js"]
Jenkins Pipeline может запускать контейнер вместо локальной среды, обеспечивая стабильность выполнения на любой машине.
Интеграция Protractor с Jenkins обеспечивает автоматическое выполнение e2e-тестов, быструю обратную связь о стабильности приложения и централизованное хранение результатов тестирования.