FYI, none of the other Stackoverflow questions/answers have resolved this for me.
In an Angular
project, we're using Protractor Cucumber Framework
for our E2E tests.
I can't figure out how to run only one single test via tags
. You're supposed to be able to edit the tags
inside of the cucumberOpts
property of the protractor.conf.js
file. But when I add a tag @testOnlyThis
there, then add that tag to a test in a .feature
file, then run npm run e2e:ci
(which, according to package.json, runs "protractor ./e2e/protractor.conf.js"
), Protractor still runs every single E2E test in our suite. Other changes made in the protractor.conf.js
file take effect, but editing the tags
seems to have zero effect.
What gives?
protractor.conf.js
// @ts-check
// Protractor configuration file, see link for more information
// https://github.com/angular/protractor/blob/master/lib/config.ts
const path = require('path');
const fs = require('fs');
const cucumberJunit = require('protractor-cucumber-junit/lib/cucumber_junit');
const downloadsPath = path.resolve(__dirname, 'downloads');
const reportingPath = path.resolve(__dirname, 'reporting/protractor-cucumber-framework');
let startDate;
/**
* @type { import("protractor").Config }
*/
exports.config = {
allScriptsTimeout: 20000,
specs: ['./src/features/**/**/**/**/**/*.feature'],
resultJsonOutputFile: 'reporting/results.json',
capabilities: {
browserName: 'chrome',
shardTestFiles: true,
maxInstances: 1,
chromeOptions: {
prefs: {
'plugins.always_open_pdf_externally': true,
download: {
directory_upgrade: true,
prompt_for_download: false,
default_directory: downloadsPath,
},
},
args: [
'--no-sandbox',
'--test-type=browser',
'--disable-gpu',
'--log-level=1',
'--disable-dev-shm-usage',
// '--disk-cache-dir=null',
],
},
},
directConnect: true,
SELENIUM_PROMISE_MANAGER: false,
noGlobals: true,
baseUrl: 'https://myair-web-dev.dht.live',
framework: 'custom',
frameworkPath: require.resolve('protractor-cucumber-framework'),
cucumberOpts: {
require: ['./src/step-definitions/*steps.ts'],
tags: ['@testOnlyThis', '~@ignore'],
format: ['json:./reporting/protractor-cucumber-framework/results.json'],
retry: 2,
},
onPrepare() {
require('ts-node').register({
project: require('path').join(__dirname, './tsconfig.json'),
});
const chai = require('chai');
const chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);
},
beforeLaunch() {
startDate = new Date().getTime();
if (!fs.existsSync(downloadsPath)) {
fs.mkdirSync(downloadsPath);
}
if (!fs.existsSync(reportingPath)) {
fs.mkdirSync(reportingPath, { recursive: true });
}
console.log(`process.env.E2E_LANGUAGE is set to: '${process.env.E2E_LANGUAGE}'`);
},
afterLaunch() {
const endDate = new Date().getTime();
const duration = (endDate - startDate) / (60 * 1000);
console.log(
`ALL TESTS EXECUTION TIME: ${Math.floor(duration)}m${Math.round((duration % 1) * 60)}s`,
);
const file = fs.readFileSync('reporting/results.json', 'utf-8');
// @ts-ignore
const xml = cucumberJunit(file);
fs.writeFileSync('e2e/reporting/results.xml', xml);
fs.rmdirSync(reportingPath, { recursive: true });
},
};
Via Active questions tagged javascript - Stack Overflow https://ift.tt/D6vj1WE
Comments
Post a Comment