“ Reference Error:未定义页面”将步骤移至其他Cucumber剧作家JavaScript步骤定义文件

问题描述 投票:0回答:1

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
定义的
javascript scope cucumber playwright
1个回答
0
投票

page = await context.newPage();

page

然后,“用户将搜索酒店”的第一行将引用:
const searchHotelPage=new SearchHotelPage(page); 如果您是您要初始化剧作家的

Before
browser

context
.

您将通过将其添加到
SearchHotel.steps.js:

page
	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.