<%- answers.isUsingTypeScript || answers.esmSupport ? "import { Given, When, Then } from '@wdio/cucumber-framework';" : "const { Given, When, Then } = require('@wdio/cucumber-framework');" %> <%- answers.isUsingTypeScript || answers.esmSupport ? `import { expect, $ } from '@wdio/globals'` : `const { expect, $ } = require('@wdio/globals')` %> <% /** * step definition with page objects */ if (answers.usePageObjects) { %> <%- answers.isUsingTypeScript || answers.esmSupport ? `import LoginPage from '${answers.relativePath}/login.page${answers.esmSupport ? '.js' : ''}';` : `const LoginPage = require('${answers.relativePath}/login.page');` %> <%- answers.isUsingTypeScript || answers.esmSupport ? `import SecurePage from '${answers.relativePath}/secure.page${answers.esmSupport ? '.js' : ''}';` : `const SecurePage = require('${answers.relativePath}/secure.page');` %> const pages = { login: LoginPage } Given(/^I am on the (\w+) page$/, async (page) => { await pages[page].open() }); When(/^I login with (\w+) and (.+)$/, async (username, password) => { await LoginPage.login(username, password) }); Then(/^I should see a flash message saying (.*)$/, async (message) => { await expect(SecurePage.flashAlert).toBeExisting(); await expect(SecurePage.flashAlert).toHaveText(expect.stringContaining(message)); }); <% } else { /** * step definition without page objects */ %> Given(/^I am on the (\w+) page$/, async (page) => { await browser.url(`https://the-internet.herokuapp.com/${page}`); }); When(/^I login with (\w+) and (.+)$/, async (username, password) => { await $('#username').setValue(username); await $('#password').setValue(password); await $('button[type="submit"]').click(); }); Then(/^I should see a flash message saying (.*)$/, async (message) => { await expect($('#flash')).toBeExisting(); await expect($('#flash')).toHaveText(expect.stringContaining(message)); }); <% } %>