Я использую инфраструктуру protractor-cucumber -typescript, где в моем требовании - запустить 2 сценария из файла объектов.После выполнения одного сценария он должен закрыть браузер, а затем снова запустить URL-адрес в браузере и запустить второй сценарий.Я понимаю, что мне необходимо соответственно обновить файл ловушек, но я не могу его идентифицировать.
Я попытался вызвать browser.get ("URL");в сценарии beforeEach и закрытие браузера (т. е.) browser.quit ();в afterEach, но это не сработало (VError: после каждой ошибки хука).
hooks.ts:
const { BeforeAll, After, Before, Status } = require("cucumber");
import * as fs from "fs";
import { browser } from "protractor";
import { config } from "../config/config";
import { async } from "q";
import { AfterAll } from "cucumber";
BeforeAll({ timeout: 1000 * 1000 }, async () => {
await browser.get(config.baseUrl);
});
After(async function (scenario) {
if (scenario.result.status === Status.FAILED) {
// screenShot is a base-64 encoded PNG
const screenShot = await browser.takeScreenshot();
this.attach(screenShot, "image/png");
}
else {
var attach = this.attach;
return browser.takeScreenshot().then(function (png) {
var decodedImage = new Buffer(png, "base64");
return attach(decodedImage, "image/png");
})
}
});
AfterAll({ timeout: 1000 * 1000 }, async () => {
await browser.quit();
});
config.ts:
import * as path from "path";
import { browser, Config } from "protractor";
import { Reporter } from "../support/reporter";
const jsonReports = process.cwd() + "/reports/json";
export const config: Config = {
seleniumAddress: "http://127.0.0.1:4444/wd/hub",
SELENIUM_PROMISE_MANAGER: false,
baseUrl: "url",
capabilities: {
browserName: "chrome",
},
framework: "custom",
frameworkPath: require.resolve("protractor-cucumber-framework"),
specs: [
"../../features/*.feature",
],
onPrepare: () => {
browser.ignoreSynchronization = true;
browser.manage().window().maximize();
browser.manage().deleteAllCookies();
browser.manage().timeouts().implicitlyWait(20000);
Reporter.createDirectory(jsonReports);
},
cucumberOpts: {
compiler: "ts:ts-node/register",
format: "json:./reports/json/cucumber_report.json",
require: ["../../typeScript/stepdefinitions/*.js",
"../../typeScript/support/*.js"],
strict: true,
tags: "(@Scenario1 or @Scenario2 )",
},
onComplete: () => {
Reporter.createHTMLReport();
},
};
Ожидается, что браузер следует закрывать после каждого сценария, запускать URL-адрес и запускать следующий сценарий, поскольку каждый из сценариев представляет собой отдельную страницу.