Мы используем sauce labs для кросс-платформенного/кросс-браузерного тестирования.Как я могу передавать пользовательские данные в мокко-тесты?
Вы можете найти мой тестовый набор в этой сущности (для экономии места в этом вопросе): https://gist.github.com/chevex/397a5a18a1a386897b41
Проблема заключается в том, что единственный способ, которым я мог понять, как передавать пользовательские данные в тестовый набор является via an environment variable. Из-за этого, когда моя задача gulp пытается запустить тестовый набор против нескольких целей параллельно, все они работают против одной и той же цели, поскольку цикл выполняется итерацией, а process.env.SAUCE_TARGET
устанавливается на конечное значение до того, как будет запущен первый пакет.
var gulp = require('gulp');
var gulpMocha = require('gulp-mocha');
var mergeStream = require('merge-stream');
gulp.task('sauce-tests', function() {
var targets = ['chrome', 'firefox', 'internet explorer'];
var streams = targets.map(function (target) {
process.env.SAUCE_TARGET = target;
return gulp.src('./test/sauce-tests.js', {read:false})
.pipe(gulpMocha({ reporter: 'spec' });
});
return mergeStream.apply(null, streams);
});
Затвор обеспечивает forEach
не помогает, потому что это установка по существу глобальное значение (process.env.SAUCE_TARGET
) на каждой итерации.
Есть ли лучший способ передать SAUCE_TARGET
в мой тестовый пакет, чтобы я мог запускать несколько тестовых наборов параллельно с разными целевыми значениями?
Я могу заставить его работать, если я запускаю все тесты синхронно, но это занимает гораздо больше времени, чем я хочу. Единственное, что препятствует параллелизму, - это тот факт, что я не могу передать инкапсулированные значения в мой пакет мокко.
Знаете ли вы, почему я получаю ошибку 'command not detected: mocha' с этим? Я могу запустить mocha из командной строки просто отлично, но когда он пытается запустить из этого дочернего процесса, он не может найти команду. – Chev
Это означает, что у вас нет глобального 'mocha'. Обновлен ответ, теперь он ищет в папке 'node_modules' –
А, но у меня есть глобальное мокко, и я также уже пытался указать локальный путь. В нем говорится, что такого файла нет, хотя, когда я перемещаюсь туда вручную, он есть. Я даже попробовал 'path.join (__ dirname, 'node_modules', '.bin', 'mocha')'. Это определенно там, но почему-то детский процесс не находит его. У меня определенно есть глобальное мокко, и я могу запустить его вручную просто отлично. – Chev