Как отправлять разные данные в каждый скрипт, работающий параллельно, с помощью NodeJS, транспортира и Saucelabs?

#javascript #node.js #jasmine #protractor #saucelabs

Вопрос:

У меня есть несколько сценариев автоматизации, настроенных с помощью NodeJS, транспортира, фреймворка Jasmine и SauceLabs.

Каждый сценарий находится в отдельных файлах .JS и считывает данные из файлов .JSON. Я определил учетные данные для входа и все другие необходимые данные в файлах JSON.

 multiCapabilities: [{
    browserName: 'chrome',
    version: 'latest',
    platform: 'Windows 8',
    name: "tests",
    splitTestsBetweenCapabilities: true,
    acceptInsecureCerts: true,
    cssSelectorsEnabled: true,
    shardTestFiles: true,
    maxInstances: 5,
}],
maxSessions: 5,
 

Используя эту конфигурацию, я могу запустить 5 экземпляров браузера Chrome и запустить 5 различных сценариев, каждый из которых самостоятельно извлекает данные.

Проблема в том, что мне нужно использовать вращающийся список из 20 учетных данных для входа в каждый скрипт. Я не уверен, есть ли какие-либо пакеты, которые уже делают это.

Как мне подойти к этому, чтобы каждый скрипт мог использовать одно уникальное имя пользователя и пароль? Каждый сценарий должен иметь возможность выбирать случайные учетные данные, а другие сценарии не должны использовать их до тех пор, пока этот сценарий не завершит свой запуск.

Комментарии:

1. Вам нужно какое-то централизованное хранилище. Но зачем вам именно нужно менять эти логины? Почему при каждом запуске должен выполняться тест с разными логинами? ? В чем причина этого? Поскольку транспортир использует несколько процессов, трудно синхронизировать данные между ними (это большие усилия для небольшой выгоды..) Я не понимаю, почему вы должны вращаться.

2. Я мог бы подумать о том, чтобы скопировать файл со всеми кредитами в каталог tmp. Затем в тестах вы получаете доступ к файлу и используете один из логинов. Когда тест завершен, он снова записывает использованный логин в файл. Для его синхронизации, возможно, попробуйте эту настройку npm, чтобы заблокировать его: => > npmjs.com/package/lockfile , поэтому заблокируйте файл при доступе к нему и добавьте соответствующий механизм опроса в свою функцию «ReadFile()» на случай, если он заблокирован в этот момент! . Я могу привести вам пример,если хотите., 0

3. Другой подход состоит в том , чтобы сделать это с помощью process.env , но я предполагаю mutlipleinstances , что это породит разные процессы, поэтому дочерние процессы не могут писать в один и тот же process.env

Ответ №1:

Вы можете использовать отдельный процесс для обновления данных .файлы json, а затем запускайте сценарии, как обычно.

Есть пакеты npm, такие как json-update, доступные, или вы можете создать свой собственный сценарий для запуска перед своим сценарием.

Комментарии:

1. Это похоже на то, что я в итоге сделал.