微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Angular Cucumber找不到要执行的任何测试

如何解决Angular Cucumber找不到要执行的任何测试

我正在尝试用黄瓜进行e2e测试。我已经按照步骤here进行了e2e测试。但是,没有找到测试。为什么找不到测试?

控制台输出如下:

$ webdriver-manager update --no-gecko --ignore_ssl && ng e2e --no-webdriver-update --protractor-config e2e/protractor.conf.lcl.js

[14:54:54] I/http_utils - ignoring SSL certificate
[14:54:54] I/config_source - curl -ok /Users/rnaddy/Documents/vscode/projects/user-management-ui/node_modules/protractor/node_modules/webdriver-manager/selenium/standalone-response.xml https://selenium-release.storage.googleapis.com/
[14:54:54] I/http_utils - ignoring SSL certificate
[14:54:54] I/config_source - curl -ok /Users/rnaddy/Documents/vscode/projects/user-management-ui/node_modules/protractor/node_modules/webdriver-manager/selenium/chrome-response.xml https://chromedriver.storage.googleapis.com/
[14:54:54] I/http_utils - ignoring SSL certificate
[14:54:54] I/http_utils - ignoring SSL certificate
[14:54:54] I/http_utils - ignoring SSL certificate
[14:54:55] I/http_utils - ignoring SSL certificate
[14:54:55] I/http_utils - ignoring SSL certificate
[14:54:55] I/update - chromedriver: file exists /Users/rnaddy/Documents/vscode/projects/user-management-ui/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_85.0.4183.87.zip
[14:54:55] I/update - chromedriver: unzipping chromedriver_85.0.4183.87.zip
[14:54:55] I/update - chromedriver: setting permissions to 0755 for /Users/rnaddy/Documents/vscode/projects/user-management-ui/node_modules/protractor/node_modules/webdriver-manager/selenium/chromedriver_85.0.4183.87
[14:54:55] I/update - chromedriver: chromedriver_85.0.4183.87 up to date
[14:54:55] I/update - selenium standalone: file exists /Users/rnaddy/Documents/vscode/projects/user-management-ui/node_modules/protractor/node_modules/webdriver-manager/selenium/selenium-server-standalone-3.141.59.jar
[14:54:55] I/update - selenium standalone: selenium-server-standalone-3.141.59.jar up to date

chunk {main} main.js,main.js.map (main) 1.04 MB [initial] [rendered]
chunk {polyfills} polyfills.js,polyfills.js.map (polyfills) 438 kB [initial] [rendered]
chunk {polyfills-es5} polyfills-es5.js,polyfills-es5.js.map (polyfills-es5) 694 kB [initial] [rendered]
chunk {runtime} runtime.js,runtime.js.map (runtime) 6.15 kB [entry] [rendered]
chunk {styles} styles.js,styles.js.map (styles) 1.28 MB [initial] [rendered]
chunk {vendor} vendor.js,vendor.js.map (vendor) 11.2 MB [initial] [rendered]
Date: 2020-09-23T19:55:19.109Z - Hash: 1453b65c5aa3bb581d3d - Time: 15205ms
** Angular Live Development Server is listening on localhost:4200,open your browser on https://localhost:4200/ **
: Compiled successfully.
[14:55:19] I/launcher - Running 1 instances of WebDriver
[14:55:19] I/local - Starting selenium standalone server...
[14:55:20] I/local - Selenium standalone server started at http://192.168.1.106:49459/wd/hub


0 scenarios
0 steps
0m00.000s
[14:55:24] I/local - Shutting down selenium standalone server.
[14:55:24] I/launcher - 0 instance(s) of WebDriver still running
[14:55:24] I/launcher - chrome #01 passed
Invalid Cucumber JSON file found under ./e2e/reports: e2e/reports/cucumber_report.33165.json

? Cucumber HTML report ./e2e/reports/cucumber_report.html generated successfully ?

文件夹结构如下:

e2e
  src
    features
      home-page.feature
    pages
      home-page.po.ts
    steps
      home-page.steps.ts
  protractor.conf.lcl.js
  tsconfig.e2e.json

配置如下:

// Protractor configuration file,see link for more information
// https://github.com/angular/protractor/blob/master/lib/config.ts
const fs = require('fs-extra')
const path = require('path')

/** @type {import('protractor').Config} */
exports.config = {
  allScriptsTimeout: 800000,getPageTimeout: 400000,specs: ['./src/features/**/*.feature'],params: {
    pageObjects: require['./src/pages/**/*.po.ts'],customTimeout: 200000
  },capabilities: {
    browserName: 'chrome',shardTestFiles: true,maxInstances: 1
  },// Only works with Chrome and Firefox
  directConnect: false,baseUrl: 'https://localhost:4200/',useAllAngular2AppRoots: true,framework: 'custom',frameworkPath: require.resolve('protractor-cucumber-framework'),cucumberOpts: {
    compiler: 'ts:ts-node/register',require: ['./src/steps/**/*.steps.ts'],format: 'json:e2e/reports/cucumber_report.json',monochrome: true,strict: true,tags: '@Regression'
  },beforelaunch: () => {
    // Delete old report files
  },onPrepare() {
    // If you need to navigate to a page which does not use Angular,// you can turn off waiting for Angular
    browser.ignoreSynchronization = true
    require('ts-node').register({
      project: path.join(__dirname,'./tsconfig.e2e.json')
    })
  },afterLaunch: () => {
    var reporter = require('cucumber-html-reporter')
    var options = {
      theme: 'bootstrap',jsonDir: './e2e/reports',jsonFile: './e2e/reports/cucumber_report.html.json',output: './e2e/reports/cucumber_report.html',ignoreBadJsonFile: true,reportSuiteAsScenarios: true,launchReport: false,Metadata: {
        'App Version': '0.3.2','Test Environment': 'STAGING','browser': 'Chrome 80.0.3987.163','Platform': 'Mac','Parallel': 'Scenarios','Executed': 'Remote'
      }
    }
    reporter.generate(options)
  },}

功能如下:

Feature: Go to the home page
  Scenario: Home Page
    Given I am on the home page
    When I do nothing
    Then I should see the title

以下是步骤:

import { expect } from 'chai';
import { Before,Given,Then,When } from 'cucumber';
import { HomePage } from '../pages/home-page.po';


let home: HomePage;

Before(() => {
  home = new HomePage();
});

Given('I am on the home page',async () => {
  await home.navigateHome();
});

When('I do nothing',() => { });

Then('I should see the title',async () => {
  expect(await home.getTitleText()).to.equal('Login');
});

解决方法

specs: ['./src/features/*.feature'],

请更新配置功能的路径。实际上,功能并未被选择。

在您的方案出现之前在功能文件中添加@Regression

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。