#javascript #cypress #cypress-cucumber-preprocessor
#javascript #cypress #cypress-cucumber-препроцессор
Вопрос:
ужасно пытаюсь запустить мой тестовый пример BDD в cypress. Ради скорости я сделал короткое видео, чтобы вы могли увидеть, что я испытываю.
Я продолжаю получать следующее сообщение об ошибке с моего терминала zsh: command not found: cypress
Я использовал следующий синтаксис:
cypress run --spec /Users/myName/Documents/CYPRESSProjects/BDD/ecommerce.feature --headed --browser chrome
также возможны следующие альтернативы:
cypress run --spec /Users/myName/Documents/CYPRESSProjects/BDD/ecommerce.feature --headed --browser chrome
cypress run --spec="CYPRESSProjects/BDD/ecommerce.feature" --headed --browser chrome
Теперь мне интересно, не сделал ли я что-то не так с моим пакетом json. или мой код для файла определения функций или спецификаций. Поэтому я добавлю его только для тщательного.
Заранее спасибо миллион
Пакет Json
{
"name": "automation",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "./node_modules/.bin/cypress run",
"headTest": "npm run test -- --headed ",
"choromeTest": "npm run test -- --browser chrome ",
"recordDashBoardTest": " npm run test -- --record --key 61a5893c-7e1b-43b9-a43f-3f1c4055e530 --reporter mochawesome",
"GreenKartTest": " npm run test -- --spec "cypress/integration/GreenKart/*" "
},
"cypress-cucumber-preprocessor": {
"nonGlobalStepDefinitions": true
},
"author": "myName",
"license": "ISC",
"devDependencies": {
"@4tw/cypress-drag-drop": "^1.4.0",
"@cypress/skip-test": "^2.5.1",
"cypress": "^6.0.0",
"cypress-cucumber-preprocessor": "^4.0.0",
"cypress-file-upload": "^4.1.1",
"cypress-mailosaur": "^2.0.1",
"mocha": "^5.2.0",
"mochawesome": "^4.1.0"
}
}
Файл функций BDD
Feature: Add items to shopping cart and add delivery address
using cypress and BDD we are going to add a number of items to shopping basket and checkout
Scenario: Ecommerce Product delivery
Given I am on the Ecommerce page
When I add mobile phones to the shopping cart
And I validate the total price in cart
Then I add my chosen delivery country and verify a thank you message
Файл определения шага:
/// <reference types="Cypress" />
import HomePage from '../../../../support/pageOjbects/HomePage'
import ProductPage from '../../../../support/pageOjbects/ProductPage'
import CheckoutOrderPage from '../../../../support/pageOjbects/CheckOrderPage'
import { Given,When,Then,And } from "cypress-cucumber-preprocessor/steps";
const homePage= new HomePage()
const productPage = new ProductPage()
Given ( 'I am on the Ecommerce page', () => {
//add your page objects selector here
cy.visit(Cypress.env('url') "/angularpractice/")
})
When('I add mobile phones to the shopping cart', function() {
//add code
homePage.getShopTab().click()//find the SHOP selector and click on it
this.data.productName.forEach(function(element) {//place the data from the data.json file and place in the forEach this loop
cy.selectProduct(element) //using the customised command add the shopping items to the cart.
});
productPage.getCheckoutButton().click()
})//end
And( 'I validate the total price in cart', () =>{
//add code here
var sum=0//start calculation of shopping cart total
//Add total cost in shopping cart of item in shopping cart
cy.get('tr td:nth-child(4) strong') .each(($e1, index, $list) =>{//to calculate items in an array with javascript
const unitCost=$e1.text() //find text
var res= unitCost.split(" ") //split text from the currency sign
res= res[1].trim() //remove any white spaces
sum=Number(sum) Number(res)//convert into a Integer number
}).then(function()//stop us giving the result BEFORE calculating we will add a promise
{
cy.log(sum)//End calculation of shopping cart total
})
cy.get('h3 strong').then(function(element)
{
const shopCartTotal=element.text() //find text
var res= shopCartTotal.split(" ") //split from the currency sign
var total= res[1].trim()//remove any white spaces
expect(Number(total)).to.equal(sum)//assertion to state total in cart and calculation is correct.
})
})//end of step
Then('I add my chosen delivery country and verify a thank you message',() =>{
// Add code for step
orderPage.getOrderButton().click()
cy.get('#country').type('United Kingdom')
cy.get(' .suggestions > ul > li > a').click()
cy.get('#checkbox2').click({force: true})
cy.get('input[type="submit"]').click()
//cy.get('.alert').should('have.text','Success! Thank you! Your order will be delivered in next few weeks :-).')
cy.get('.alert').then(function(element){
//How confirm a text element exists
const actualText= element.text()
expect(actualText.includes('Success')).to.be.true
})//end of promise
})//end of step
Комментарии:
1. Если вы не установили Cypress глобально, вам потребуется получить доступ к исполняемому файлу через
./node_modules/.bin/cypress
или через запись вscripts
объекте в вашем файле пакета.2. @jonrsharpe спасибо за ваш ответ. Извините за мое невежество, можете ли вы объяснить это более подробно?
Ответ №1:
В разделе package.json обновите скрипты с приведенной ниже конфигурацией запуска
"scripts": {
"test": "./node_modules/.bin/cypress run",
"cuketest": "npm run test -- --spec **/*.feature --browser chrome"
}
Для выполнения
>npm run cuketest
Ответ №2:
Привет смог решить эту проблему, используя следующую команду:
npx cypress run --spec /Users/MYName/Documents/CYPRESSProjects/BDD/ecommerce.feature --headed --browser chrome
Это позволило cypress запустить файл BDD.
Источник: https://docs.cypress.io/guides/guides/command-line.html#cypress-run