Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
141 views
in Technique[技术] by (71.8m points)

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

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	est.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 # ....
ode_modulesprotractor-cucumber-frameworklib
esultsCapturer.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.

Framework structure for your path references

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Simple installation makes my framework works

npm install [email protected] --save-dev


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...