Protractor Cucumber Configuration file throwing undefined warning for my scenarios even though those are present

99封情书 提交于 2019-12-13 02:57:57

问题


my Configuration file is not able to find the spec file even though it is present in the path that i provided in the cucumberOpts..i tried all the resolutions but none of them is worked.

Config File

const log4js = require('log4js');
var fs=require('fs');
global.screenshots = require('protractor-take-screenshots-on-demand');
global.browser2;
var propertiesReader=require('properties-reader');
var env=require("../../env.js");
const {Given, Then, When, Before} = require('cucumber');

exports.config = {

//seleniumAddress: 'http://localhost:4444/wd/hub',
directConnect:true,

framework: 'custom',
// path relative to the current config file
frameworkPath: require.resolve('protractor-cucumber-framework'),
capabilities: {
    'browserName': 'chrome',
    metadata: {
        browser: {
            name: 'chrome',
            version: '79'
        },
        device: 'MacBook Pro 15',
        platform: {
            name: 'OSX',
            version: '10.12.6'
        },
       disableLog:true,
       durationInMS:true,
       openReportInBrowser:true
    }
},
ignoreUncaughtExceptions:false,
// Spec patterns are relative to this directory.
specs: [
    '../../Test_modules/features/'
],

beforeLaunch:function(){
    if (fs.existsSync('./logs/ExecutionLog.log')) {
        fs.unlink('./logs/ExecutionLog.log')
    }
    log4js.configure({
        appenders: {
            out: { type: 'console' }, 
            info:{ type: 'dateFile', filename: "../Reports/logs/info", "pattern":"-dd.log",alwaysIncludePattern:false},
            "console" : {
                "type": "console",
                "category": "console"
            },
            "file" : {
                "category": "test-file-appender",
                "type": "file",
                "filename": "../../Reports/logs/log_file.log",
                "maxLogSize": 10240,
               // "backups": 3,
              //  "pattern": "%d{dd/MM hh:mm} %-5p %m"
            }
          },
         categories: {
               "info" :{"appenders": ["console"], "level": "info"},
               "default" :{"appenders": ["console", "file"], "level": "DEBUG"},
              //"file" : {"appenders": ["file"], "level": "DEBUG"}
        }
    });
},
cucumberOpts: {
    require:['../../Test_modules/utilities/timeOutConfig.js','../../Test_modules/stepDefinition/spec.js'],
    tags: false,
    profile: false,
    format:'json:../../Reports/jsonResult/results.json',
    'no-source': true
},
 onPrepare: function () {
     const logDefault = log4js.getLogger('default');
     const logInfo=log4js.getLogger('info');
     screenshots.browserNameJoiner = ' - '; //this is the default
     //folder of screenshot
     screenshots.screenShotDirectory = '../../Screenshots';
     global.openNewBrowser=require('../../Test_modules/utilities/newBrowserinstance.js');
     global.testData=require('../../TestData/testData.json');
     browser.logger = log4js.getLogger('protractorLog4js');
     global.firstBrowser=browser;
     global.properties=propertiesReader('../../TestData/propertyConfig.properties');
     browser.waitForAngularEnabled(false);
     browser.manage().window().maximize();
     global.facebook=require('../../Test_modules/pages/fbPageObjects.js');
     global.utility=require('../../Test_modules/utilities/testFile.js');
  },
  plugins: [{
      package: 'H:/workspace/Proc-UI/node_modules/protractor-multiple-cucumber-html-reporter-plugin',
      options:{
          // read the options part for more options
          automaticallyGenerateReport: true,
          removeExistingJsonReportFile: true,
          reportPath:'../../Reports/HtmlReports',
          reportName:"test.html"
      },
      customData: {
            title: 'Run info',
            data: [
                {label: 'Project', value: 'Framework Setup'},
                {label: 'Release', value: '1.2.3'},
                {label: 'Cycle', value: 'Test Cycle'}
            ]
        },
  }]
};

Spec File



var utilityInit,page2;//browser2;
page1=new facebook(firstBrowser);
module.exports=function(){
    this.Given(/^Open the browser and Load the URL$/,async function(){
        await firstBrowser.get(properties.get("url1"));
        browser.logger.info("Title of the window is :"+await browser.getTitle());
        //screenshots.takesScreenshot("filename");
    });

    this.When(/^User entered the text in the search box$/,async function(){
        firstBrowser.sleep(3000);
        await page1.email().sendKeys(testData.Login.CM[0].Username);
        browser.sleep(3000);
        await page1.password().sendKeys(testData.Login.CM[0].Password);
    });

    this.Then(/^click on login button$/,async function(){
        browser.sleep(3000);
        await facebook.submit().click();
    });

    this.Then(/^User tried to open in new browser instance$/,async function(){
        browser2=await openNewBrowser.newBrowserInit(firstBrowser);
        utilityInit=new utility(browser2);
        utilityInit.ignoreSync(properties.get("url2"));
        browser2.manage().window().maximize();
        console.log(await utilityInit.title()+" title");
        browser2.sleep(5000);
    });

    this.When(/^User entered the text in the email field$/,async function(){
        page2=new facebook(browser2);
        console.log(await page2.title()+" browser2");
        await page2.search().sendKeys("testing");
        browser2.sleep(3000);
        page1=new facebook(firstBrowser);
        console.log(await page1.title()+" browser1");
        await page1.email().sendKeys(testData.Login.CM[0].Username);
        screenshots.takeScreenshot("newScreenshot");
        firstBrowser.sleep(5000);
    });
};

Execution log

1) Scenario: Title of your scenario # ..\features\test.feature:24
   ? Given Open the browser and Load the URL
       Undefined. Implement with the following snippet:

         Given('Open the browser and Load the URL', function () {
           // Write code here that turns the phrase above into concrete actions
           return 'pending';
         });

   ? Then User tried to open in new browser instance
       Undefined. Implement with the following snippet:

         Then('User tried to open in new browser instance', function () {
           // Write code here that turns the phrase above into concrete actions
           return 'pending';
         });

   ? And User entered the text in the email field
       Undefined. Implement with the following snippet:

         Then('User entered the text in the email field', function () {
           // Write code here that turns the phrase above into concrete actions
           return 'pending';
         });

   √ After # ..\..\node_modules\protractor-cucumber-framework\lib\resultsCapturer.js:27

1 scenario (1 undefined)
3 steps (3 undefined)
0m00.004s

i tried by adding cucumber dependencies, updating from relative path to absolute path everything i did.. but none it is resolved.. previously it worked fine but in the process of updating it in to public framework file.. i updated the paths from absolute to relative path. that's it i lost my whole framework and it is continuesly saying undefined scenarios.

**For Just made me sure i ran the script by passing wrong spec file name in the cucumber opts and still it giving Undefined and that confirmed me that it is not even considering that spec file that i passed.


回答1:


Simple installation makes my framework works

npm install cucumber@1.3.3 --save-dev



来源:https://stackoverflow.com/questions/58981516/protractor-cucumber-configuration-file-throwing-undefined-warning-for-my-scenari

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!