Мой проект - кукольник из огурца в node.js.
У меня есть 2 файла функций и 2 файла шагов.
login.feature, login.steps. js
rollForward.feature, rollForward.steps. js
В файле rollForward.feature у меня есть 'Учитывая, что я вошел в систему'
В файле login.steps. js у меня есть step Given (" Я вошел в систему", ...
Мои тесты выполняются дважды. Как мне выполнить только один раз
login.feature code
Функция: Login
# to check first cucumber works or not
Scenario: Verify login
Given The browser is open
When I open pro2 site
When I enter valid username and password
When I click the login button
Then I see Select Company Dialog
When I click Select dropdown
Then I see list of companies
When I select IndoreC company
When I click Login to Company
Then I go to home page
login.steps. js удален нерелевантный код
const { When, Then, Given } = require("cucumber")
var chai = require('chai')
, expect = chai.expect()
, should = chai.should()
const puppeteer = require("puppeteer")
const dotenv = require("dotenv")
dotenv.config({ path: 'config.env' });
const company = 'xxxx';
async function openBrowser() {
return await this.launchBrowser();
// this.browser = await puppeteer.launch({ headless: false, defaultViewport: null })
// this.page = await this.browser.newPage();
}
async function openPro2Site() {
expectedUrl = 'https://pro2.xxxxxxxsx.com';
return await this.visit(expectedUrl);
}
async function selectCompanyDialog() {
await this.page.waitForFunction(
'document.querySelector("body").innerText.includes("Select Company")'
);
}
async function loginToCompany() {
await this.page.waitFor(500);
await this.page.click('button[class="btn btn-block mt-3"]');
}
Given("I have logged in", { timeout: 60000 }, async function () {
await openBrowser.call(this);
await openPro2Site.call(this);
await enterValidUsernameAndPassword.call(this);
await clickLoginButton.call(this);
await selectCompanyDialog.call(this);
await clickSelectDropdown.call(this);
await selectIndoreCCompany.call(this);
await loginToCompany.call(this);
})
When('I select xxxx company', selectxxxxxCompany);
Given("The browser is open", { timeout: 30000 }, openBrowser)
When("I open pro2 site", { timeout: 10000 }, openPro2Site);
When("I enter valid username and password", enterValidUsernameAndPassword);
When("I click the login button", clickLoginButton);
Then("I see Select Company Dialog", selectCompanyDialog);
When("I click Select dropdown", { timeout: 10000 }, clickSelectDropdown);
Then("I see list of companies", async function () {
await this.page.waitForFunction(
'document.querySelector("body").innerText.includes("IndoreC")'
);
});
When('I click Login to Company', loginToCompany);
Then('I go to home page', async function () {
await this.page.waitFor(1500);
await this.page.url().should.equal('https://pro2.xxxxxx.com/#/');
console.log('got to login 99 tweice');
});
а вот и файл rollForward.feature ----------------------------------------- - Функция: прокрутить вперед
Scenario: Verify pro2 login, roll forward
Given I have logged in
When I select mymodel in model list
When I click on the Revenue folder in left nav
When I click on Revenue Summary 2 in left nav
When I go to Revenue Summary page
When I click on Roll Forward in top menu bar
When I see Roll Model Forward Dialog
When I click on arrow to the right of the current Month
When I see a confirmation dialog
When I click Save
#When I see a completion toaster within 4 minutes
Then I confirm that Forecast start period in the grid has increased by 1 month
When I save the Forecast date
When I click on TOC
Then I confirm TOC Forecast start period is correct
When I again click on Roll Forward in top menu bar
Then I confirm that the Forecast start period in the dialog box has increased by 1 month
Редактировать 1: при запуске второго теста он запускается во втором окне браузера. Мне пришло в голову удалить файл login.feature. Когда я это сделал второй тест все еще выполнялся, но в исходном окне браузера.
Редактировать 2: я объединил функции в 1 файл функций только с одним сценарием. Я также объединил все шаги в 1 файл шага. На последнем шаге я закрываю браузер.Однако тест все равно запускается дважды !!! Что происходит?