Scenario: Booking Hotel scenario # features/bookHotel.feature:3
✔ Before # steps/userLogin.steps.js:11
✔ Given User navigate to the Hotel app # steps/userLogin.steps.js:21
✔ Then User should see the login page # steps/userLogin.steps.js:26
✔ Then User will login to the app # steps/userLogin.steps.js:34
✖ Then User will search for the hotel # steps/searchHotel.steps.js:6
ReferenceError: page is not defined
at World.\<anonymous\> (/Users/abcd/Documents/PlaywrightCucumberTraining/steps/searchHotel.steps.js:7:45)
✔ After # steps/userLogin.steps.js:17
1 scenario (1 failed)
4 steps (1 failed, 3 passed)
userlogin.feature
Feature: User Login feature
Scenario: User Login scenario
Given User navigate to the Hotel app
Then User should see the login page
Then User will login to the app
userlogin.steps.js:
const { Given, Then, Before, After, BeforeAll } = require('@cucumber/cucumber');
const { expect } = require('@playwright/test');
const { chromium } = require('playwright');
const LoginPage = require('../pages/login.page');
const SearchHotelPage = require('../pages/searchHotel.page');
const {searchHotelSelectors} = require('../data/testData.json');
require('dotenv').config();
let browser, context, page;
Before(async () => {
browser = await chromium.launch({ headless: false });
context = await browser.newContext();
page = await context.newPage();
});
After(async () => {
await browser.close();
});
Given('User navigate to the Hotel app', { timeout: 20000 }, async () => {
await page.goto(process.env.url);
});
Then('User should see the login page',{ timeout: 20000 }, async () => {
await expect(page.locator('text=XYZ Launches The XYZ Hotel App!')).toBeVisible();
const loginPage = new LoginPage(page);
await loginPage.login();
//await loginPageInstance.login();
});
Then('User will login to the app',{ timeout: 20000 }, async () => {
await expect(page.locator('text=Welcome to XYZ Group of Hotels')).toBeVisible();
});
// Then('User will search for the hotel',{ timeout: 20000 }, async () => {
// const searchHotelPage=new SearchHotePage(this.page);
// //console.log(testData.searchHotelDetails.location)
// await searchHotelPage.searchHotel(searchHotelSelectors.searchHotelDetails.location);
// });
BookHotel.feature
Feature: Booking Hotel feature
Scenario: Booking Hotel scenario
Given User navigate to the Hotel app
Then User should see the login page
Then User will login to the app
Then User will search for the hotel
SearchHotel.steps.js
const { Given, Then, Before, After } = require('@cucumber/cucumber');
const SearchHotelPage = require('../pages/searchHotel.page');
const {searchHotelSelectors} = require('../data/testData.json');
require('dotenv').config();
Then('User will search for the hotel',{ timeout: 20000 }, async () => {
const searchHotelPage=new SearchHotelPage(page);
await searchHotelPage.searchHotel(searchHotelSelectors.searchHotelDetails.location);
});
当将步骤或任何其他函数从一个文件中移动或将任何其他函数复制到另一个文件中时,您需要确保还要复制其引用的所有变量的定义。
userlogin.steps.js定义的
page = await context.newPage();
page
然后,“用户将搜索酒店”的第一行将引用:
const searchHotelPage=new SearchHotelPage(page);
如果您是您要初始化剧作家的Before
,
browser
和
context
.
您将通过将其添加到
SearchHotel.steps.js:
page