I am using Protractor + Jasmine.
I have a weird issue. I have 2 test suites (or Spec.js). I want to run them one after another (strictly). However, protractor is starting the Spec1 related BeforeAll(). And quickly jumping to Spec2 related BeforeAll().
In Spec1, there is one login function, and some times the login is taking 40 seconds. Is this is the reason?
And, after logged in from Spec1, Protractor jumps to Spec2 and starts executing "BeforeAll". And later comes back to Spec1 related "describe".
Please bear with me about these big files, as they are critical to debug.
If I run these two Specs separately, ie., not in a sequence, everything was fine.
Spec1.js
beforeAll(function () {
originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
jasmine.DEFAULT_TIMEOUT_INTERVAL = globalconstants.wait10Mints;
browser.waitForAngularEnabled(false);
browser.get(env.appUrl);
browser.getTitle().then(function (title) {
expect(title, "Browser title is not the expected. But " + browser.getTitle()).toBe("Valueone");
});
browser.waitForAngularEnabled(true);
loginPage.login();
commonPage.navigateToUsers();
usersPage.deleteUsers(name);
});
describe('Create Users', function () {
it("Create user", function () {
something
});
it("Create user", function () {
something
});
});
Spec2.js
beforeAll(function () {
originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
jasmine.DEFAULT_TIMEOUT_INTERVAL = globalconstants.wait10Mints;
browser.waitForAngularEnabled(false);
browser.get(env.appUrl);
browser.getTitle().then(function (title) {
expect(title, "Browser title is not the expected. But " + browser.getTitle()).toBe("Valueone");
});
browser.waitForAngularEnabled(true);
loginPage.login();
commonPage.navigateToAccounts();
accountsPage.deleteAccounts(number);
});
describe('Create Accounts', function () {
it("Create Savings", function () {
something
});
it("Create current account", function () {
something
});
});
Conf.js
var env = require('./Utils/env.js');
var HTMLReport = require('protractor-html-reporter-2');
var JasmineReporters = require('jasmine-reporters');
exports.config =
{
baseUrl: 'http://localhost:9999',
directConnect: true,
framework: 'jasmine2',
suites: {
1sp: './mysuites/1Spec.js',
2sp: './mySuites/2Spec.js',
},
capabilities: {
'browserName': env.browserName,
'platform': env.osName,
//Closes any existing browsers
'shardTestFiles': false,
'maxInstances': 1
},
params: {
tempVar: false
},
onPrepare: async () => {
global.result = false;
var fs = require('fs-extra');
fs.emptyDir('./Reports/Screenshots/', function (err) {
console.log(err);
});
jasmine.getEnv().addReporter({
specDone: function (result) {
if (result.status == 'failed') {
browser.getCapabilities().then(function (caps) {
browser.takeScreenshot().then(function (png) {
var stream = fs.createWriteStream('./Reports/Screenshots/' + env.browserName + '-' + result.fullName + '.png');
stream.write(new Buffer(png, 'base64'));
stream.end();
});
});
}
}
});
var width = 1600;
var height = 1200;
browser.driver.manage().window().setSize(width, height);
//Html reporter
jasmine.getEnv().addReporter(new JasmineReporters.JUnitXmlReporter({
consolidateAll: true,
savePath: './Reports',
filePrefix: 'xmlresults'
}));
},
onComplete: async () => {
var capsPromise = browser.getCapabilities();
capsPromise.then(function (caps) {
testConfig = {
reportTitle: 'UI Test Execution Report',
outputPath: './Reports',
outputFilename: 'UI Test Results',
screenshotPath: './screenshots',
testBrowser: 'FireFox',
modifiedSuiteName: false,
screenshotsOnlyOnFailure: true,
testPlatform: env.osName
};
new HTMLReport().from('./Reports/xmlresults.xml', testConfig);
});
}
};