Вы можете указать параметры в командной строке с помощью --params.key=value
и получить переданные параметры в сценарии с помощью browser.params.key
.
1) env.ts
exports let config = {
prod: {
baseUrl: "https://www.asde.com",
loginCred:
{
username: "asde.sin@ud.com.com",
password: "asbcde"
}
},
test: {
baseUrl: "https://www.facebook.com",
loginCred: {
username: "asde.sin12@ud.com",
password: "asbcdefd"
}
}
};
2) Крючки для огурца .ts
const { BeforeAll, After, AfterAll, Status } = require("cucumber");
import { browser } from "protractor";
import { config } from '../config/env.ts';
BeforeAll({timeout: 100 * 1000}, async () => {
let env = browser.params.env;
// you need to put above line into this function, rather than
// put at the top of import section, the hooks.ts will be loaded by
// nodejs before browser instance inited. Otherwise, the `browser`
// variable is null, it leads `browser.params.env` fail.
await browser.get(config[env].baseUrl);
});
3) Конфигуратор транспортира.
export const config: Config = {
seleniumAddress: "http://127.0.0.1:4444/wd/hub",
...
params: {
env: 'test'
}
};
4) укажите env из командной строки
protractor config.js --params.env=prod
5) HomePageObject
import { config } from './config/env.ts';
export class HomePageObject {
constructor(env: string) {
this.env = browser.params.env;
this.username = config[this.env].username;
this.password = config[this.env].password;
}
login() {
element(by.css('input.username')).sendKeys(this.username);
element(by.css('input.password')).sendKeys(this.password);
element(by.css('button.login')).click();
}
}