Karma — это тестовый раннер для JavaScript, который позволяет выполнять автоматические тесты в различных браузерах. Интеграция с Sauce Labs расширяет возможности Karma, позволяя запускать тесты на удалённых облачных платформах с множеством браузеров и операционных систем. Такая интеграция особенно полезна для кросс-браузерного тестирования и проверки совместимости.
Для работы с Sauce Labs требуется учетная запись, которая предоставляет username и access key. Эти данные используются для аутентификации и подключения Karma к облачной платформе.
npm install karma-sauce-launcher --save-dev
karma.conf.js, добавив
конфигурацию для Sauce Labs.Пример конфигурации:
module.exports = function(config) {
config.set({
basePath: '',
frameworks: ['jasmine'],
files: [
'src/**/*.js',
'test/**/*.spec.js'
],
reporters: ['dots', 'saucelabs'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: false,
browsers: ['SL_Chrome', 'SL_Firefox', 'SL_Safari'],
singleRun: true,
concurrency: 5,
// Настройка Sauce Labs
sauceLabs: {
username: process.env.SAUCE_USERNAME,
accessKey: process.env.SAUCE_ACCESS_KEY,
testName: 'Karma integration tests',
build: process.env.CI_BUILD_NUMBER || 'Local Build',
tunnelIdentifier: process.env.TRAVIS_JOB_NUMBER || 'LocalTunnel',
startConnect: true
},
customLaunchers: {
SL_Chrome: {
base: 'SauceLabs',
browserName: 'chrome',
platform: 'Windows 10',
version: 'latest'
},
SL_Firefox: {
base: 'SauceLabs',
browserName: 'firefox',
platform: 'Windows 10',
version: 'latest'
},
SL_Safari: {
base: 'SauceLabs',
browserName: 'safari',
platform: 'macOS 13',
version: 'latest'
}
}
});
};
Ключевые моменты:
platform, browserName и
version.Sauce Labs интегрируется с различными системами CI, включая Travis CI, GitHub Actions и Jenkins. Основная цель — запуск тестов на разных браузерах в автоматическом режиме.
Пример команды для запуска тестов локально:
SAUCE_USERNAME=your_username SAUCE_ACCESS_KEY=your_access_key karma start karma.conf.js
Для CI/CD переменные окружения SAUCE_USERNAME и
SAUCE_ACCESS_KEY задаются через конфигурацию системы, что
позволяет не хранить их в репозитории.
Karma с Sauce Labs поддерживает подробные отчёты о тестах:
concurrency позволяет значительно сократить время прогонки
тестов на множестве браузеров.Интеграция Karma с Sauce Labs обеспечивает масштабируемое и надёжное кросс-браузерное тестирование, что критично для современных веб-приложений. Она позволяет автоматизировать проверку совместимости, выявлять ошибки в ранней стадии разработки и поддерживать стабильность продукта на разных платформах.