Как сделать, чтобы мои тесты кукольника из огурца не запускались дважды - PullRequest
0 голосов
/ 19 июня 2020

Мой проект - кукольник из огурца в 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 файл шага. На последнем шаге я закрываю браузер.Однако тест все равно запускается дважды !!! Что происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...