Playwright: .toBeVisible() timeout is ignored - javascript

I faced an unclear behavior in the Playwright 1.18 toBeVisible() expectation.
Here is the test row:
await expect(this.page.locator('.top-row .close i')).toBeVisible({timeout: 2000 })
And if the element is not visible, it hangs forever.
If I jump into the toBeTruthy.js -> toBeTruthy code, I see that the timeout is calculated to 0 despite the received options:
And for some reason, there is the current timeout from _toMatchText matcher used. Is this a bug or I'm doing somethin wrong?
Package.json:
"devDependencies": {
"#playwright/test": "^1.18",
"allure-commandline": "^2.17.2",
"allure-playwright": "^2.0.0-beta.14",
"rimraf": "3.0.2"
}
Playwright config:
import { PlaywrightTestConfig, devices } from '#playwright/test';
const config: PlaywrightTestConfig = {
testDir: './spec',
timeout: 10 * 1000,
expect: {
timeout: 3 * 1000
},
forbidOnly: !!process.env.CI,
retries: process.env.CI ? 2 : 0,
workers: process.env.CI ? 5 : 1,
reporter: [
['line'],
['json', { outputFile: './test-results/results.json' }],
['./util/test-start-stop-reporter.ts'],
['allure-playwright']
],
use: {
baseURL: 'http://localhost:8080',
screenshot: 'only-on-failure',
channel: 'chrome', //https://playwright.dev/docs/browsers#chromium
headless: false,
viewport: { width: 1820, height: 950 },
ignoreHTTPSErrors: true,
video: 'retain-on-failure',
actionTimeout: 5 * 1000,
navigationTimeout: 30 * 1000,
launchOptions: {
args: ['--window-position=1980,10'],
devtools: process.env.PWDEBUG ? true : false,
},
},
projects: [
{
name: 'Google Chrome',
use: {
channel: 'chrome',
},
},
],
outputDir: 'test-results/',
};
export default config;

Related

Wrong wdio.webapp.conf.js config or chrome driver issue - automated test do not start

For some reason I cannot start my tests written using WebdriverIO together with Mocha + Chai testing frameworks. When I run yarn start command to start them I get such an output with every test:
Execution of 31 spec files started at 2021-07-22T13:36:42.326Z
[0-0] RUNNING in chrome - C:\Users\ADOMAS-PC\Desktop\Automation Projects\driveweb\test\e2e\specs\e2e\cancelDownload.spec.js
[0-0] Error: Failed to create session.
Unable to create session from {
"desiredCapabilities": {
"browserName": "chrome",
"goog:chromeOptions": {
"binary": "C:\u002f\u002fProgram Files\u002f\u002fGoogle\u002f\u002fChrome\u002f\u002fApplication\u002f\u002fchrome.exe",
"prefs": {
"directory_upgrade": true,
"prompt_for_download": false,
"download.default_directory": "C:\\Users\\ADOMAS-PC\\Desktop\\Automation Projects\\driveweb\\test\\data\\downloads",
"download.prompt_for_download": false,
"profile.default_content_setting_values.automatic_downloads": 1
},
"args": [
"--headless",
"--no-sandbox",
"--incognito",
"--disable-gpu",
"--window-size=1600,1000"
]
}
},
"capabilities": {
"firstMatch": [
{
"browserName": "chrome",
"goog:chromeOptions": {
"binary": "C:\u002f\u002fProgram Files\u002f\u002fGoogle\u002f\u002fChrome\u002f\u002fApplication\u002f\u002fchrome.exe",
"prefs": {
"directory_upgrade": true,
"prompt_for_download": false,
"download.default_directory": "C:\\Users\\ADOMAS-PC\\Desktop\\Automation Projects\\driveweb\\test\\data\\downloads",
"download.prompt_for_download": false,
"profile.default_content_setting_values.automatic_downloads": 1
},
"args": [
"--headless",
"--no-sandbox",
"--incognito",
"--disable-gpu",
"--window-size=1600,1000"
]
}
}
]
}
}
Build info: version: '3.141.5', revision: 'd54ebd709a', time: '2018-11-06T11:58:47'
System info: host: 'DESKTOP-AK6OAUH', ip: '10.18.0.3', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '16.0.1'
Driver info: driver.version: unknown
This is how wdio.webapp.conf.js looks like:
const { createDir, removeDirContents } = require('./test/e2e/helpers/folderHelper');
const { populateData } = require('./test/e2e/helpers/apiHelper');
const { TimelineService } = require('wdio-timeline-reporter/timeline-service');
var mkdirp = require('mkdirp');
const path = require('path');
global.downloadDir = path.join(process.cwd(), 'test/data/downloads');
global.uploadDir = path.join(process.cwd(), 'test/data/uploads');
global.uploadPermDir = path.join(process.cwd(), 'test/data/uploadsPerm');
global.baseUrl = 'https://drive.automation.com/';
exports.config = {
hostname: 'automation-selenium',
port: 4444,
path: '/wd/hub',
specs: [
'./test/e2e/specs/e2e/**/*.spec.js',
'./test/e2e/specs/pages/*.spec.js'
],
maxInstances: 1,
capabilities: [
{
maxInstances: 1,
browserName: 'chrome',
'goog:chromeOptions': {
binary: "C://Program Files//Google//Chrome//Application//chrome.exe",
prefs: {
directory_upgrade: true,
prompt_for_download: false,
'download.default_directory': global.downloadDir,
'download.prompt_for_download': false,
'profile.default_content_setting_values.automatic_downloads': 1
},
args: [
'--headless',
'--no-sandbox',
'--incognito',
'--disable-gpu',
'--window-size=1600,1000']
}
}
],
logLevel: 'debug',
outputDir: './reports/output',
bail: 0,
baseUrl: global.baseUrl,
waitforTimeout: 50000,
connectionRetryTimeout: 60000,
connectionRetryCount: 3,
framework: 'mocha',
mochaOpts: {
ui: 'bdd',
compilers: ['js:#babel/register'],
timeout: 60000,
retries: 1
},
reporters: [
'spec',
[
'allure',
{
outputDir: './reports/allure-results/',
disableWebdriverStepsReporting: true,
disableWebdriverScreenshotsReporting: false
}
]
],
onPrepare: async function(config, capabilities) {
global.baseUrl = config.baseUrl;
createDir(global.downloadDir);
createDir(global.uploadDir);
if (!global.baseUrl.includes('automation.com')) {
await populateData(config.baseUrl);
}
},
afterTest: async function (test, context, { error, result, duration, passed, retries }) {
if (!passed) {
const current_datetime = new Date();
const time = current_datetime.getHours() + "h-" + current_datetime.getMinutes() + "m-" + current_datetime.getSeconds() + "s";
const screenshotDir = path.join(process.cwd(), `screenshots`);
await mkdirp(screenshotDir);
const filename = test.title.replace(/\s+/g, '-');
const screenshotImg = `${screenshotDir}/${time}-${filename}.png`;
browser.saveScreenshot(screenshotImg);
}
},
onComplete: function() {
removeDirContents(global.downloadDir);
removeDirContents(global.uploadDir);
}
};
What I already tried?
Reinstalling chrome browser on my PC.
Installing/reinstalling various libraries like wdio, selenium-standalone and etc.
Run tests from CMD using administrator mode.
Setting binary value to C://Program Files//Google//Chrome//Application//chromedriver.exe
Downgrading node to 12.8.1 version
What else can I try to make them work?
yarn add #wdio/selenium-standalone-service
was a solution to this problem.

protractor-jasmine2-screenshot-reporter blank screenshot

Protractor config file have 2 reporting custom report for logging and other one is protractor-
jasmine2-screenshot-reporter. Screenshot png is generate but blank white screen only dispalyed.
Below code for conf.js.
let HtmlScreenshotReporter = require('protractor-jasmine2-screenshot-reporter');
let DateFormat = require('../utils/date-format').DateFormat;
let ReportGenerator = require('../utils/customReport').ReportGenerator;
let reportGenerator = new ReportGenerator({
dest: '/../reports/',
filename: 'CoHubReport',
reportTitle: 'CoHub Automation Suite',
cssPath: './../utils/reportUtil/customReport-styles.css',
jsPath: './../utils/reportUtil/reportUtil.js'
});
let reporter = new HtmlScreenshotReporter({
showConfiguration: false,
captureOnlyFailedSpecs: false,
takeScreenshots: true,
userCss: './../../utils/report-styles.css',
dest: './../reports',
filename: 'CoHub_Report_' + DateFormat(new Date(), "yyyymmdd") + '.html',
reportTitle: "Co Hub Report :" + DateFormat(new Date(), "mm-dd-yyyy HH:MM"),
cleanDestination: false,
consolidateAll: false
});
exports.config = {
directConnect: true,
seleniumAddress: 'http://localhost:4444/wd/hub',
// sauceUser: "0000",
// sauceKey: "00000",
restartBrowserBetweenTests: true,
getPageTimeout: 80000,
allScriptsTimeout: 50000000,
specs: [
'./pagecheck/settings/configavo-spec.js',
// './pagecheck/ant/antent-spec.js',
],
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 50000000,
isVerbose: true
},
multiCapabilities: [
{
browserName: 'chrome',
version: 'latest',
platform: 'Windows 10',
name: "chrome-tests",
shardTestFiles: true,
sequential: true,
maxInstances: 3
}
],
framework: 'jasmine2',
beforeLaunch: function () {
return new Promise(function (resolve) {
reporter.beforeLaunch(resolve);
});
},
onPrepare: function () {
browser.driver.manage().window().maximize();
jasmine.getEnv().addReporter(reporter);
beforeEach(function () {
reportGenerator.initiate();
});
afterEach(function () {
reportGenerator.finalize();
});
},
afterLaunch: function (exitCode) {
return new Promise(function (resolve) {
reporter.afterLaunch(resolve.bind(this, exitCode));
});
}
};
Also, can require screenshot to be attached to html report. we have limitation to use other reporting within the project, please dont recommend other reporting to use.
try
exports.config {
...
noGlobals: false,
...
}
Setting it to false allow to use default globals: 'protractor', 'browser', '$', '$$', 'element', 'by'. These also exist as properties of the protractor namespace: 'protractor.browser', 'protractor.$', 'protractor.$$', 'protractor.element', 'protractor.by', and 'protractor.By'.
When no globals is set to true, the only available global variable will be 'protractor' link

Selenium + Protractactor: Downloading file in chrome & firefox

I've been trying to update my conf.js file to download files, it should work for firefox and chrome (independent of one another).
I've been following the guides and answers online, (including but not limited to stackoverflow) yet it doesn't fully work for me. Chrome is no problem, firefox is my trouble maker.
On firefox it simply does not download the file, unlike chrome where it downloads the file.
Update: I cannot disable popup from firefox
The relevant info from conf.js
exports.config = {
[...]
multiCapabilities: [
{
browserName: 'chrome',
'goog:chromeOptions': {
w3c: false, // problems with latest chrome driver... browser.actions is causing issues: https://github.com/jan-molak/serenity-js/issues/329
prefs: {
download: {
prompt_for_download: false,
directory_upgrade: true,
default_directory: downloadsPath,
},
},
},
} ,
{
browserName: 'firefox',
'goog:chromeOptions': {
marionette: true,
'moz:firefoxOptions': {
prefs: {
'pdfjs.disabled': true,
'browser.download.folderList': 2,
'browser.download.dir': downloadsPath,
'browser.download.panel.shown': false,
'browser.download.useDownloadDir': true,
'browser.download.manager.useWindow': false,
'browser.helperApps.alwaysAsk.force': false,
'browser.helperApps.neverAsk.openFile': true,
'browser.download.manager.closeWhenDone': false,
'browser.download.manager.alertOnEXEOpen': false,
'browser.download.manager.showWhenStarting': false,
'browser.download.manager.focusWhenStarting': false,
'browser.download.manager.showAlertOnComplete': false,
'browser.helperApps.neverAsk.saveToDisk': 'application/vnd.openxmlformats',
},
},
},
},
],
[...]
};
The relevant code from my dowload-e2e.js spec:
const downloadBtn = manipulations.getDomObject('download-contract-button', 'id');
browser.executeScript('arguments[0].click();', downloadBtn.getWebElement());
try {
await downloads.verifyFileExists(`file-name.docx`);
await downloads.verifyFileSize(`file-name.docx`, 0);
} catch (err) {
throw new Error(`ERROR: ${err.message}`);
}
downloads.removeFile(`file-name.docx`);
Firefox/Chrome try like this:
const multiCapabilities = [
{
browserName: 'chrome',
'goog:chromeOptions': {
w3c: false, // due problems with latest chrome driver
// browser.actions is causing issues: https://github.com/jan-molak/serenity-js/issues/329
prefs: {
download: {
'prompt_for_download': false,
'directory_upgrade': true,
'default_directory': downloadsPath
}
}
}
},
{
browserName: 'firefox',
'goog:chromeOptions': {
marionette: true,
'moz:firefoxOptions': {
prefs: {
'browser.download.folderList': 2,
'browser.download.dir': downloadsPath,
'browser.download.manager.showWhenStarting': false,
'browser.helperApps.alwaysAsk.force': false,
'browser.download.manager.useWindow': false,
'browser.helperApps.neverAsk.saveToDisk': 'application/octet-stream, application/json, ' +
'text/comma-separated-values, text/csv, application/csv, ' +
'application/excel, application/vnd.ms-excel, ' +
'application/vnd.msexcel, text/anytext, text/plaintext, ' +
'image/png, image/pjpeg, image/jpeg, application/zip'
}
}
}
}
];

Botium box - Job queued for execution

I've recorded a series of 13 sample utterances in chatbots section
of botium box and saved the test cases .But it says job
queued for execution and is nearly waiting for long time to execute
2019-06-17T12:14:43.199Z: Job queued for execution
2019-06-17T12:14:44.144Z: 2019-06-17T12:14:43.038Z
botium-box-worker-runtestcases Started processing, JobId #2122.
2019-06-17T12:14:44.273Z: 2019-06-17T12:14:43.053Z botium-BotDriver
Loaded Botium configuration file ./botium.json
2019-06-17T12:14:44.491Z: 2019-06-17T12:14:43.061Z botium-BotDriver
BuildCompiler: Capabilites: { PROJECTNAME: 'Test Project - vMMVv -
Test Session', TEMPDIR: 'botiumwork', CLEANUPTEMPDIR: true,
WAITFORBOTTIMEOUT: 10000, SIMULATE_WRITING_SPEED: false,
DOCKERCOMPOSEPATH: 'docker-compose', DOCKERMACHINEPATH:
'docker-machine', DOCKERMACHINE: false, DOCKERIMAGE: 'node:boron',
DOCKERUNIQUECONTAINERNAMES: false, DOCKERSYSLOGPORT_RANGE:
'47100-47299', BOT_HEALTH_STATUS: 200, SLACK_PUBLISHPORT_RANGE:
'46100-46299', FACEBOOK_PUBLISHPORT_RANGE: '46300-46499',
FACEBOOK_SEND_DELIVERY_CONFIRMATION: true,
BOTFRAMEWORK_PUBLISHPORT_RANGE: '46500-46699',
BOTFRAMEWORK_WEBHOOK_PORT: 3978, BOTFRAMEWORK_WEBHOOK_PATH:
'api/messages', BOTFRAMEWORK_CHANNEL_ID: 'facebook',
SIMPLEREST_PING_RETRIES: 6, SIMPLEREST_PING_TIMEOUT: 10000,
SIMPLEREST_PING_VERB: 'GET', SIMPLEREST_METHOD: 'GET',
WEBSPEECH_SERVER_PORT: 46050, WEBSPEECH_LANGUAGE: 'en-US',
WEBSPEECH_CLOSEBROWSER: true, SCRIPTING_TXT_EOL: '\n',
SCRIPTING_XLSX_EOL_SPLIT: '\r', SCRIPTING_XLSX_EOL_WRITE: '\r\n',
SCRIPTING_XLSX_STARTROW: 2, SCRIPTING_XLSX_STARTCOL: 1,
SCRIPTING_NORMALIZE_TEXT: true, SCRIPTING_ENABLE_MEMORY: true,
SCRIPTING_MATCHING_MODE: 'includeLowerCase',
SCRIPTING_UTTEXPANSION_MODE: 'all',
SCRIPTING_UTTEXPANSION_RANDOM_COUNT: 1,
SCRIPTING_MEMORYEXPANSION_KEEP_ORIG: false,
RETRY_USERSAYS_ONERROR_REGEXP: [], RETRY_USERSAYS_NUMRETRIES: 1,
RETRY_USERSAYS_FACTOR: 1, RETRY_USERSAYS_MINTIMEOUT: 1000,
ASSERTERS: [ { ref: 'HASLINK',
src: 'botium-asserter-basiclink',
global: false,
args: {} } ], LOGIC_HOOKS: [], USER_INPUTS: [], ALEXA_SMAPI_API: 'simulation', ALEXA_SMAPI_SKILLID:
'adminamzn1.ask.skill.4bf0188a-4dda-4810-b754-a3181193fbff',
ALEXA_SMAPI_LOCALE: 'en-US', ALEXA_SMAPI_REFRESHTOKEN:
'Atzr|IwEBIEvgZitZhPSHNy3v7aEQ1OSZAW4iNAjaoHh2zH316H83ZjDZP0q-TFziI8TtVZDZDr-YW7dR7UQlulJ-Vx0aGkqtaSBaduYVVofaRqrQfJBcvA-4xBmbcfcFAD4pUORxqlx880Cr9-q_xup_9p5KHDhARFNlb7VIpxOc6l0XJkSb4_MtIdjZSH7JEHbBEjkYD9KOs6EzP8BYKHWiujrlmblXSe2e-DlFuTVlDJsH0nbKWAhVD8jha-Lbvhg8MNjcF5Ns1i-motmfPxNGPKyMCJcA6uXdduk2OSDUIJItMrJ6tbxB8_cMU1_0KJokGACvJcYptshW8r41DZrmVph1OUUmMGUlqSDRI54Z7Vx2Lqkx4ot1xJiR_FgAcWbt6TLYKpZtkVJf_Z5K21OZ5dPMUV41lR_EfHGhJnObQDWEUGswqAt4AYOfamXAqXfIktqHgdNMSOaU4DaHpu_Sr2PjrW8y7himvRrMIuhxDvJ4guezplhR1v5LZgr8cnoaaRg38prvDeAZ4FYgkUHFs866UsBGqaLXnslxjTyxPFg6zAxsCNc7LhhnzMdNBbilmqwYKUzysGL0MRi-6T5n6MGJag6TwOYZyszmxBRQQWrM_8oJL7WPo-3DRaPs8gjZLwLwodqrjP3GzBtyYQL6k97ka3Z8yD-U3wv_esGzcXCsoJy9lg',
ALEXA_SMAPI_ENDPOINTREGION: '', CONTAINERMODE: 'alexa-smapi',
FBPAGERECEIVER_REDISURL: { port: '6379', host: 'redis', db: 0,
options: {} } }
2019-06-17T12:14:44.869Z: 2019-06-17T12:14:43.860Z
botium-ScriptingProvider Using matching mode: includeLowerCase
2019-06-17T12:14:44.999Z: 2019-06-17T12:14:43.861Z
botium-asserterUtils Loaded Default asserter - [ 'BUTTONS', 'MEDIA',
'PAUSE_ASSERTER', 'ENTITIES', 'ENTITY_VALUES', 'INTENT',
'INTENT_CONFIDENCE' ]
2019-06-17T12:14:45.108Z: 2019-06-17T12:14:43.861Z
botium-asserterUtils Loaded Default logic hook - [ 'PAUSE',
'WAITFORBOT', 'SET_SCRIPTING_MEMORY', 'CLEAR_SCRIPTING_MEMORY',
'INCLUDE' ]
2019-06-17T12:14:45.519Z: 2019-06-17T12:14:43.862Z
botium-asserterUtils Loaded Default user input - [ 'BUTTON', 'MEDIA',
'FORM' ]
2019-06-17T12:14:45.628Z: 2019-06-17T12:14:43.863Z
botium-asserterUtils Trying to load HASLINK asserter from
botium-asserter-basiclink
2019-06-17T12:14:45.756Z: 2019-06-17T12:14:44.089Z
botium-asserterUtils Loaded HASLINK SUCCESSFULLY
2019-06-17T12:14:45.884Z: 2019-06-17T12:14:44.116Z
botium-box-worker-runtestcases expanding convos ...
2019-06-17T12:14:46.002Z: 2019-06-17T12:14:44.116Z
botium-ScriptingProvider ExpandConvos - Using utterances expansion
mode: all
2019-06-17T12:14:46.117Z: 2019-06-17T12:14:44.119Z
botium-box-worker-runtestcases found 1 convos ...
2019-06-17T12:14:46.247Z: 2019-06-17T12:14:44.120Z
botium-box-worker-runtestcases batchNum: 1 batchCount: 1
convosPerBatch: 1 batchStart: 0 batchEnd: 0 batchLength: 1
2019-06-17T12:14:46.361Z: 2019-06-17T12:14:44.122Z botium-BotDriver
Build - Botium Core Version: 1.4.13
2019-06-17T12:14:46.567Z: 2019-06-17T12:14:44.122Z botium-BotDriver
Build - Capabilites: { PROJECTNAME: 'Test Project - vMMVv - Test
Session', TEMPDIR: 'botiumwork', CLEANUPTEMPDIR: true,
WAITFORBOTTIMEOUT: 10000, SIMULATE_WRITING_SPEED: false,
DOCKERCOMPOSEPATH: 'docker-compose', DOCKERMACHINEPATH:
'docker-machine', DOCKERMACHINE: false, DOCKERIMAGE: 'node:boron',
DOCKERUNIQUECONTAINERNAMES: false, DOCKERSYSLOGPORT_RANGE:
'47100-47299', BOT_HEALTH_STATUS: 200, SLACK_PUBLISHPORT_RANGE:
'46100-46299', FACEBOOK_PUBLISHPORT_RANGE: '46300-46499',
FACEBOOK_SEND_DELIVERY_CONFIRMATION: true,
BOTFRAMEWORK_PUBLISHPORT_RANGE: '46500-46699',
BOTFRAMEWORK_WEBHOOK_PORT: 3978, BOTFRAMEWORK_WEBHOOK_PATH:
'api/messages', BOTFRAMEWORK_CHANNEL_ID: 'facebook',
SIMPLEREST_PING_RETRIES: 6, SIMPLEREST_PING_TIMEOUT: 10000,
SIMPLEREST_PING_VERB: 'GET', SIMPLEREST_METHOD: 'GET',
WEBSPEECH_SERVER_PORT: 46050, WEBSPEECH_LANGUAGE: 'en-US',
WEBSPEECH_CLOSEBROWSER: true, SCRIPTING_TXT_EOL: '\n',
SCRIPTING_XLSX_EOL_SPLIT: '\r', SCRIPTING_XLSX_EOL_WRITE: '\r\n',
SCRIPTING_XLSX_STARTROW: 2, SCRIPTING_XLSX_STARTCOL: 1,
SCRIPTING_NORMALIZE_TEXT: true, SCRIPTING_ENABLE_MEMORY: true,
SCRIPTING_MATCHING_MODE: 'includeLowerCase',
SCRIPTING_UTTEXPANSION_MODE: 'all',
SCRIPTING_UTTEXPANSION_RANDOM_COUNT: 1,
SCRIPTING_MEMORYEXPANSION_KEEP_ORIG: false,
RETRY_USERSAYS_ONERROR_REGEXP: [], RETRY_USERSAYS_NUMRETRIES: 1,
RETRY_USERSAYS_FACTOR: 1, RETRY_USERSAYS_MINTIMEOUT: 1000,
ASSERTERS: [ { ref: 'HASLINK',
src: 'botium-asserter-basiclink',
global: false,
args: {} } ], LOGIC_HOOKS: [], USER_INPUTS: [], ALEXA_SMAPI_API: 'simulation', ALEXA_SMAPI_SKILLID:
'adminamzn1.ask.skill.4bf0188a-4dda-4810-b754-a3181193fbff',
ALEXA_SMAPI_LOCALE: 'en-US', ALEXA_SMAPI_REFRESHTOKEN:
'Atzr|IwEBIEvgZitZhPSHNy3v7aEQ1OSZAW4iNAjaoHh2zH316H83ZjDZP0q-TFziI8TtVZDZDr-YW7dR7UQlulJ-Vx0aGkqtaSBaduYVVofaRqrQfJBcvA-4xBmbcfcFAD4pUORxqlx880Cr9-q_xup_9p5KHDhARFNlb7VIpxOc6l0XJkSb4_MtIdjZSH7JEHbBEjkYD9KOs6EzP8BYKHWiujrlmblXSe2e-DlFuTVlDJsH0nbKWAhVD8jha-Lbvhg8MNjcF5Ns1i-motmfPxNGPKyMCJcA6uXdduk2OSDUIJItMrJ6tbxB8_cMU1_0KJokGACvJcYptshW8r41DZrmVph1OUUmMGUlqSDRI54Z7Vx2Lqkx4ot1xJiR_FgAcWbt6TLYKpZtkVJf_Z5K21OZ5dPMUV41lR_EfHGhJnObQDWEUGswqAt4AYOfamXAqXfIktqHgdNMSOaU4DaHpu_Sr2PjrW8y7himvRrMIuhxDvJ4guezplhR1v5LZgr8cnoaaRg38prvDeAZ4FYgkUHFs866UsBGqaLXnslxjTyxPFg6zAxsCNc7LhhnzMdNBbilmqwYKUzysGL0MRi-6T5n6MGJag6TwOYZyszmxBRQQWrM_8oJL7WPo-3DRaPs8gjZLwLwodqrjP3GzBtyYQL6k97ka3Z8yD-U3wv_esGzcXCsoJy9lg',
ALEXA_SMAPI_ENDPOINTREGION: '', CONTAINERMODE: 'alexa-smapi',
FBPAGERECEIVER_REDISURL: { port: '6379', host: 'redis', db: 0,
options: {} } }
2019-06-17T12:14:46.763Z: 2019-06-17T12:14:44.123Z botium-BotDriver
Build - Sources : { LOCALPATH: '.', GITPATH: 'git', GITBRANCH:
'master', GITDIR: '.' }
2019-06-17T12:14:46.915Z: 2019-06-17T12:14:44.123Z botium-BotDriver
Build - Envs : { IS_BOTIUM_CONTAINER: true }
2019-06-17T12:14:48.284Z: 2019-06-17T12:14:48.206Z
botium-PluginConnectorContainer Botium plugin
botium-connector-alexa-smapi loaded
2019-06-17T12:14:48.374Z: 2019-06-17T12:14:48.207Z
botium-connector-alexa-smapi Validate called
2019-06-17T12:14:48.463Z: 2019-06-17T12:14:48.210Z
botium-connector-alexa-smapi Build called
2019-06-17T12:14:48.752Z: 2019-06-17T12:14:48.211Z
botium-connector-alexa-smapi Start called
2019-06-17T12:14:48.880Z: 2019-06-17T12:14:48.212Z
botium-box-worker-runtestcases Running Convo "Myplanfeatures_Alexa",
Index 0, 1 from 1
2019-06-17T12:14:49.020Z: 2019-06-17T12:14:48.232Z botium-Convo
Myplanfeatures_Alexa/Line 3: user says { "sender": "me",
"channel": null, "messageText": "bye", "stepTag": "Line 3",
"not": false, "asserters": [], "logicHooks": [], "userInputs":
[] }
2019-06-17T12:14:49.130Z: 2019-06-17T12:14:48.234Z
botium-connector-alexa-smapi UserSays called
You can see if the Botium Agent is online by switching to the Agents view, you should see a recent heartbeat there (agents are sending a "I'm online" heartbeat every few seconds):
If the agent is not online, you have find out why - best way is to have a look at the docker logs.

Issue with Karma-Browserify + Karma-Coverage

I am having issues getting karma-browserify to work with karma-coverage. I have spent a lot of time trying to figure out what is wrong, but I didn't find a solution.
Here is my .js file (the functions don't do anything; they are just mocks to test code coverage):
// src/js/utilities/form-validation.js
let includedInTest = () => true;
let alsoIncludedInTest = () => true;
let notIncludedInTest = () => true;
let alsoNotIncludedInTest = () => true;
export default {
includedInTest,
alsoIncludedInTest
};
This is my test file:
// src/spec/utilities/form-validation.spec.js
import formUtilities from '../../js/utilities/form-validation';
describe('Form validation functions', function () {
it('Should return "true"', function () {
expect(formUtilities.includedInTest()).toBe(true);
});
it('Should return "true"', function () {
expect(formUtilities.alsoIncludedInTest()).toBe(true);
});
});
Finally, this is my karma.conf:
module.exports = function(config) {
config.set({
basePath: '',
frameworks: ['browserify', 'jasmine-jquery', 'jasmine'],
files: [
'bower_components/jquery/dist/jquery.js',
'bower_components/jquery-validation/dist/jquery.validate.js',
'src/js/**/*.js',
'src/spec/**/*.spec.js'
],
exclude: [
'src/js/index.js'
],
preprocessors: {
'src/js/**/*.js': ['browserify', 'coverage'],
'src/spec/**/*.spec.js': ['browserify']
},
browserify: {
debug: true,
transform: [
['babelify', { presets: ['es2015'] }]
]
},
reporters: ['mocha', 'coverage'],
mochaReporter: {
colors: {
success: 'green',
info: 'bgBlue',
warning: 'cyan',
error: 'bgRed'
},
symbols: {
success: '√',
info: '#',
warning: '!',
error: 'x'
}
},
coverageReporter: {
instrumenters: { isparta: require('isparta') },
instrumenter: {
'src/**/*.js': 'isparta'
},
dir: 'coverage',
subdir: '.',
reporters: [
{ type: 'html', dir: 'coverage' },
{ type: 'text-summary' }
],
check: {
global: {
statements: 90,
branches: 90,
functions: 90,
lines: 90
},
each: {
statements: 90,
branches: 90,
functions: 90,
lines: 90
}
},
watermarks: {
statements: [50, 75],
functions: [50, 75],
branches: [50, 75],
lines: [50, 75]
}
},
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['PhantomJS'],
singleRun: false,
concurrency: Infinity
});
};
This config yields this result:
==== Coverage summary ====
Statements : 100% ( 1/1 )
Branches : 100% ( 2/2 )
Functions : 100% ( 0/0 )
Lines : 100% ( 1/1 )
=============
This is obviously wrong since I have four functions on "form-validation.js", and I am testing two of them. But according to the summary report, there are no functions to be tested.
This line from coverage/index.html reveals only one line is being parsed by karma-coverage:
I also tried 'browserify-istanbul' in the transform array (and removed instrumenters from "coverageReport"):
transform: [
['babelify', { presets: ['es2015'] }],
'browserify-istanbul'
]
But this generates an error:
18 08 2017 15:50:14.617:ERROR [karma]: TypeError: Cannot read property 'start' of undefined
at /Users/gferraz/Sites/OAA-Refactor/node_modules/istanbul/lib/object-utils.js:59:44
at Array.forEach (native)
at Object.addDerivedInfoForFile (/Users/gferraz/Sites/OAA-Refactor/node_modules/istanbul/lib/object-utils.js:58:37)
at Collector.fileCoverageFor (/Users/gferraz/Sites/OAA-Refactor/node_modules/istanbul/lib/collector.js:94:15)
at /Users/gferraz/Sites/OAA-Refactor/node_modules/istanbul/lib/collector.js:108:30
at Array.forEach (native)
at Collector.getFinalCoverage (/Users/gferraz/Sites/OAA-Refactor/node_modules/istanbul/lib/collector.js:107:22)
at checkCoverage (/Users/gferraz/Sites/OAA-Refactor/node_modules/karma-coverage/lib/reporter.js:148:33)
at /Users/gferraz/Sites/OAA-Refactor/node_modules/karma-coverage/lib/reporter.js:257:32
at Array.forEach (native)
at Collection.forEach (/Users/gferraz/Sites/OAA-Refactor/node_modules/karma/lib/browser_collection.js:93:21)
at /Users/gferraz/Sites/OAA-Refactor/node_modules/karma-coverage/lib/reporter.js:247:16
at Array.forEach (native)
at CoverageReporter.onRunComplete (/Users/gferraz/Sites/OAA-Refactor/node_modules/karma-coverage/lib/reporter.js:246:15)
at Server.<anonymous> (/Users/gferraz/Sites/OAA-Refactor/node_modules/karma/lib/events.js:13:22)
at emitTwo (events.js:111:20)
Any suggestions on how to fix the config file?
The config suggested on the correct answer of this post helped me: Karma/Istanbul Code Coverage does not find functions and always returns 100%
Now I am getting an error on the html report ERROR [coverage]: TypeError: Cannot read property 'text' of undefined (meaning the html file I want to generate for the report is not being generated), which seems to be related to istanbul. However, I am getting the right code coverage report on my terminal window:
Strangely enough, the error doesn't happen every time the tests run, so I am able to get the html file just fine sometimes.
Here is the karma.conf that solved the problem addressed on my question:
module.exports = function(config) {
config.set({
basePath: '',
frameworks: ['browserify', 'jasmine-jquery', 'jasmine'],
files: [
'bower_components/jquery/dist/jquery.js',
'bower_components/jquery-validation/dist/jquery.validate.js',
'src/js/**/*.js',
'src/spec/**/*.spec.js'
],
exclude: [
'src/js/index.js'
],
preprocessors: {
'src/js/**/*.js': ['browserify'],
'src/spec/**/*.spec.js': ['browserify']
},
browserify: {
debug: true,
extensions: ['.js'],
configure: (bundle) => {
bundle.transform('babelify', { presets: ['es2015'] });
bundle.transform(require('browserify-istanbul')({
ignore: ['**/spec/**']
}));
}
},
reporters: ['mocha', 'coverage'],
coverageReporter: {
dir: 'coverage',
subdir: '.',
reporters: [
{ type: 'html', dir: 'coverage' },
{ type: 'text-summary' }
],
etc...
}
});
};

Categories

Resources