Я использую "BDD описать", чтобы написать свой тест пользовательского интерфейса в Nightwatch. Одна из проблем, с которыми я сталкиваюсь, заключается в том, что я не могу использовать один и тот же экземпляр объекта страницы между блоками "it". Я должен повторить одну и ту же строку кода в каждом блоке "it", чтобы запустить тест. Я повторяю ниже код
const loginTest = browser.page.loginPage();
Есть ли способ избежать избыточности? , Вот мой тест. Обратите внимание, что nightwatch не позволяет мне создавать экземпляр под блоком описания.
describe('Login Cases', function() {
beforeEach (browser => browser.url(browser.launchUrl)
it('Verify login is successful', async function (browser) {
const loginTest = browser.page.loginPage();
await loginTest.waitForElementVisible('@body')
await loginTest.setValue('@emailInput',browser.globals.Username)
await loginTest.setValue('@passwordInput',browser.globals.Password)
await loginTest.click('@submitBtn')
await loginTest.expect.element('@myAccountBtn').to.be.visible;
});
it('Verify incorrect login', async function (browser) {
const loginTest = browser.page.loginPage();
await loginTest.waitForElementVisible('@body')
await loginTest.setValue('@emailInput','incorrectusername')
await loginTest.setValue('@passwordInput','incorrectpwd')
await loginTest.click('@submitBtn')
await loginTest.expect.element('@myAccountBtn').to.not.be.present;
});
afterEach (browser => browser.end());
});
This is how i wrote for before block to instantiate the login page object.
its returning loginTest is not defined.
beforeEach(async function(browser) {
const loginTest = browser.page.loginPage();
browser => browser.url(browser.launchUrl)
});
Я решил проблему с помощью этого ключевого слова при создании экземпляра объекта страницы.
beforeEach(async function(browser) {
this.loginTest = await browser.page.loginPage()
await this.loginTest.loginSuccess(browser.globals.Username,browser.globals.Password)
this.myAccounttest = await browser.page.myAccountPage();
});