Попробуйте перейти к следующему файлу спецификации, хотя первая спецификация еще не закончена - PullRequest
1 голос
/ 15 марта 2019

У меня есть эти два спецификационных файла, но когда я хочу выполнить их оба, браузер откроет для angula.js web, затем переключится на angularCal.js и вообще не будет запускать angular.js, и я также попытался использовать 'src /test/*.js ', это также не работает для меня. И я пытался использовать наборы ту же проблему, и когда я выполнял их отдельно, они работают нормально.

//config
import {Config,browser} from 'protractor';
import{testConfig,platform} from 'protractor-html-reporter-2'

let HtmlScreenshotReporter = require('protractor-html-reporter-2');
let jasmineReporters = require('jasmine-reporters');

let reportsDirectory = './reports';
let dashboardReportDirectory = reportsDirectory + '/dashboardReport';

// An example configuration file
exports.config = {
    // The address of a running selenium server.
    //seleniumAddress: 'http://localhost:4444/wd/hub',
    directConnect: true,

    // Capabilities to be passed to the webdriver instance.
    capabilities: {
      browserName: 'chrome'
    },

    // Spec patterns are relative to the configuration file location passed
    // to protractor (in this example conf.js).
    // They may include glob patterns.
    //specs: ['src/test/angularCal.js','src/test/angular.js'],
    specs: ['src/test/angularCal.js'],
    //specs: ['*.js'],




    // Options to be passed to Jasmine-node.
    jasmineNodeOpts: {
      showColors: true, // Use colors in the command line report.
    },onPrepare: function () {
      // xml report generated for dashboard
      browser.manage().timeouts().implicitlyWait(5000);
      jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({
          consolidateAll: true,
          savePath: reportsDirectory + '/xml',
          filePrefix: 'xmlOutput'
      }));

      var fs = require('fs-extra');
      if (!fs.existsSync(dashboardReportDirectory)) {
          fs.mkdirSync(dashboardReportDirectory);
      }

      jasmine.getEnv().addReporter({
          specDone: function (result) {
              if (result.status == 'failed') {
                  browser.getCapabilities().then(function (caps) {
                      var browserName = caps.get('browserName');

                      browser.takeScreenshot().then(function (png) {
                          var stream = fs.createWriteStream(dashboardReportDirectory + '/' + browserName + '-' + result.fullName + '.png');
                          stream.write(new Buffer(png, 'base64'));
                          stream.end();
                      });
                  });
              }else if(result.status == 'passed'){
                browser.getCapabilities().then(function (caps) {
                  var browserName = caps.get('browserName');

                  browser.takeScreenshot().then(function (png) {
                      var stream = fs.createWriteStream(dashboardReportDirectory + '/' + browserName + '-' + result.fullName + '.png');
                      stream.write(new Buffer(png, 'base64'));
                      stream.end();
                  });
              });
              }
          }
      });

  },

  onComplete: function () {
      var browserName, browserVersion;
      var capsPromise = browser.getCapabilities();

      capsPromise.then(function (caps) {
          browserName = caps.get('browserName');
          browserVersion = caps.get('version');
       //let   platform = caps.get('platform');

          var HTMLReport = require('protractor-html-reporter-2');
       let   testConfig = {
              reportTitle: 'Protractor Test Execution Report',
              outputPath: dashboardReportDirectory,
              outputFilename: 'index',
              screenshotPath: './',
              testBrowser: browserName,
              browserVersion: browserVersion,
              modifiedSuiteName: false,
              screenshotsOnlyOnFailure: false,
             // testPlatform: platform
          };
          new HTMLReport().from(reportsDirectory + '/xml/xmlOutput.xml', testConfig);
      });
  },
  };

//angular.js =spec 1

import { browser, by, element } from "protractor";
import { BaseTest } from "../common/BaseTest";
import { angularsite } from "../pageobjects/angular_site";

describe('Angular site', function () {
    let base = new BaseTest()
    //browser.get(base.StartTest(2));
    browser.get("https://material.angular.io/components/autocomplete/overview")
    let ang = new angularsite();

    it('Scrolldown', function () {
        ang.scrollSettingSeprate();
    })

    it('Select Text (Alert)', function () {
        ang.autocom(2, 2);
    })


    it('Checkbox', function () {
        ang.checkboxtab();
        ang.clickcheckbox();
    })

    it('DatePicker', function () {
        ang.clickdatetab();
        ang.clickdatemenu();
        ang.clickcurrentdate()
    })


    it('Radiobutton', function () {
        ang.clickradiobuttontab();
        ang.clickradiobutton();
    })


    it('Slider', function () {
        ang.clickslidertab()
        ang.clicksliderop(3, 2, 3, 3)
    })

    it('Switch Alert', function () {
        browser.get("http://www.way2automation.com/angularjs-protractor/banking/#/manager/addCust")
        ang.alert(2)

    })



    it('Switch windows', function () {
        browser.ignoreSynchronization = true;// for non angular sites
        browser.get("https://skpatro.github.io/demo/links/")
        ang.switch_windows()

    })



})



angularCal.js = spec2 

import { browser, element, by } from "protractor";
import { BaseTest } from "../common/BaseTest";
import { datatable } from "../pageobjects/table_data";
import { calculator } from "../pageobjects/calculator_page";

describe('Calculator Page', function () {
    let base = new BaseTest()
    let calcu = new calculator();

    beforeEach(function() {
        calcu.clear_num1()
        calcu.clear_num2()
      });

      afterEach(function() {
        calcu.clear_num1()
        calcu.clear_num2()
      });

    browser.get(base.StartTest(1))

    it('Validate Caculator Page Addition feature', function () {
        calcu.enter_num1(2)
        calcu.addition_Operator()
        calcu.enter_num2(3)
        calcu.click_Button();

        calcu.validate_OutPut(4);

    })

    it('Validate Caculator Page Subtraction feature', function () {
        calcu.enter_num1(2)
        calcu.subtract_Operator()
        calcu.enter_num2(3)
        calcu.click_Button();

        calcu.validate_OutPut(5);

    })

    it('Validate Caculator Page Multiplication', function () {
        calcu.enter_num1(11)
        calcu.multi_Operator()
        calcu.enter_num2(12)
        calcu.click_Button();

        calcu.validate_OutPut(4);

    })


    it('Validate Caculator Page Division',function(){
        calcu.enter_num1(2)
        calcu.division_Operator()
        calcu.enter_num2(3)
        calcu.click_Button();

        calcu.validate_OutPut(7);

    })


    it('Validate Caculator Page Modulo',function(){
        calcu.enter_num1(2)
        calcu.modulo_Operator()
        calcu.enter_num2(3)
        calcu.click_Button();

        calcu.validate_OutPut(8);

    })


    it('Get Table data', function () {
        let table = new datatable()
        table.get_dataTable();
    })





})

Ответы [ 2 ]

2 голосов
/ 15 марта 2019

Любой код в описании, который не содержится в it или одном из хуков (beforeAll, beforeEach ...), будет выполнен до любых тестов. Это один из неожиданных способов поведения Жасмин.

Вы видите, что оба ваших URL-адреса попадают сразу, потому что оба ваших browser.get запущены перед вашими тестами.

Можете ли вы изменить свой код на следующий

describe('Calculator Page', function () {
   beforeAll(function(){
     browser.get(base.StartTest(1))
   })
})

Обновление: немного изменена структура

describe('Angular site', function () {
    let base = new BaseTest()
    let ang = new angularsite()

    beforeAll(function(){
       //browser.get(base.StartTest(2));
       browser.get("https://material.angular.io/components/autocomplete/overview")
    })
})
1 голос
/ 15 марта 2019

вы можете использовать наборы в вашем конфигурационном файле:

suites: {
angular: './src/test/angular.js',
angularCal: './src/test/angularCal.js'
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...