diff --git a/lib/_helpers.js b/lib/_helpers.js index 5f80cea..8058932 100644 --- a/lib/_helpers.js +++ b/lib/_helpers.js @@ -1,6 +1,9 @@ const { faker } = require("@faker-js/faker"); +const path = require("path"); const moment = require("moment"); +const download_dir = process.env.file_download_path; + exports.parseString = text => { let result = text; try { @@ -28,6 +31,14 @@ exports.getValue = value => { return String(getDynamicValue(value)); }; +exports.setFileDownloadPath = async (taiko) => { + if (download_dir) { + const file_download_dir = path.isAbsolute(`${download_dir}`) ? `${download_dir}` : process.cwd() + `/${download_dir}`; + var downloadPath = path.resolve(__dirname, file_download_dir); + await taiko.client().send('Page.setDownloadBehavior', { behavior: 'allow', downloadPath: downloadPath }); + } +}; + const getDynamicValue = value => { return process.env[value] || gauge.dataStore.scenarioStore.get(value) || getDate(value) || getFakeData(value) || value; }; diff --git a/lib/_init.js b/lib/_init.js index 302992e..34c0f7b 100644 --- a/lib/_init.js +++ b/lib/_init.js @@ -22,7 +22,6 @@ const download_dir = process.env.file_download_path; beforeSuite(async () => { if (!browser_for_each_scenario || browser_for_each_scenario === 'false') { await taiko.openBrowser({ headless: headless === 'true', args: browser_args}); - await setFileDownloadPath(); } taiko.setConfig({ navigationTimeout: Number((process.env.navigation_timeout || taiko.getConfig("navigationTimeout"))), @@ -40,7 +39,6 @@ beforeScenario(async context => { headless: headless === 'true', args: browser_args }); - await setFileDownloadPath(); } }); @@ -81,11 +79,3 @@ gauge.customScreenshotWriter = async function () { await taiko.screenshot({ path: screenshotFilePath, fullPage: false }); return path.basename(screenshotFilePath); }; - -async function setFileDownloadPath() { - if (download_dir) { - const file_download_dir = path.isAbsolute(`${download_dir}`) ? `${download_dir}` : process.cwd() + `/${download_dir}`; - var downloadPath = path.resolve(__dirname, file_download_dir); - await taiko.client().send('Page.setDownloadBehavior', { behavior: 'allow', downloadPath: downloadPath }); - } -}; diff --git a/lib/page_steps.js b/lib/page_steps.js index 266abcd..7755c57 100644 --- a/lib/page_steps.js +++ b/lib/page_steps.js @@ -6,6 +6,7 @@ const selectors = require("./_selectors"); const helpers = require("./_helpers"); const path = require("path"); const { getPageElement, checkElementState, scrollToElementView } = require("./_pageElement"); +const { setFileDownloadPath } = require("./_helpers"); step(["Goto ", "Open ", "Goto in new tab", "Open in new tab"], async url => { let navigateUrl = process.env[url] ? process.env[url] : (url ? url : process.env.APP_ROOT_URL); @@ -20,6 +21,7 @@ step(["Goto ", "Open ", "Goto in new tab", "Open in new ta const response = await taiko.goto(navigateUrl); assert.strictEqual(response.status.code, 200); } + setFileDownloadPath(taiko); }); step(["Switch to ", "Switch to window"], async urlTitle => { diff --git a/package.json b/package.json index 2c090ed..48a60ca 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@softrams/gauge-taiko-steps", - "version": "0.1.8", + "version": "0.1.9", "description": "Implementation of common test steps with Taiko driver for writing tests with Gauge framework", "main": "index.js", "scripts": {