Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to control preScript execution before every url #2124

Closed
jayanathkarunarathna opened this issue Aug 1, 2018 · 2 comments
Closed

How to control preScript execution before every url #2124

jayanathkarunarathna opened this issue Aug 1, 2018 · 2 comments

Comments

@jayanathkarunarathna
Copy link

Hi,
I am using sitespeed.io to measure our application performance. It requires login before visiting urls. I have written preScript to login. But that preScript executes before each url which should not happen. Can you please guide me how to control this. Following is the docker command and console out I got.
bold numbers are console outs for debugging.

docker run --shm-size=1g --rm -v "$(pwd)":/sitespeed.io sitespeedio/sitespeed.io --preScript preRequisites.js urls.txt -b chrome --browsertime.pageLoadStrategy normal --browsertime.videoParams.combine -n 1 --speedIndex --video
Google Chrome 68.0.3440.75
Mozilla Firefox 61.0
[2018-08-01 05:44:05] INFO: Versions OS: linux 4.9.93-linuxkit-aufs nodejs: v8.11.1 sitespeed.io: 7.3.5 browsertime: 3.2.3 coach: 2.0.6
[2018-08-01 05:44:05] INFO: Starting chrome for analysing https://cde-mss-web-qa.aws.na.sysco.net/app/my-products 1 time(s)
[2018-08-01 05:44:05] INFO: Testing url https://cde-mss-web-qa.aws.na.sysco.net/app/my-products iteration 1
0
1
2
3
4
5
6
[2018-08-01 05:46:58] ERROR: TimeoutError: Waiting for element to be located By(xpath, //div[contains(@Class,"mss-customer-info-card")])
Wait timed out after 30004ms
Wait timed out after 30004ms
at /usr/src/app/node_modules/selenium-webdriver/lib/promise.js:2201:17
at ManagedPromise.invokeCallback_ (/usr/src/app/node_modules/selenium-webdriver/lib/promise.js:1376:14)
at TaskQueue.execute_ (/usr/src/app/node_modules/selenium-webdriver/lib/promise.js:3084:14)
at TaskQueue.executeNext_ (/usr/src/app/node_modules/selenium-webdriver/lib/promise.js:3067:27)
at asyncRun (/usr/src/app/node_modules/selenium-webdriver/lib/promise.js:2927:27)
at /usr/src/app/node_modules/selenium-webdriver/lib/promise.js:668:7
at
at process.tickCallback (internal/process/next_tick.js:188:7)
From: Task: Waiting for element to be located By(xpath, //div[contains(@Class,"mss-customer-info-card")])
at scheduleWait (/usr/src/app/node_modules/selenium-webdriver/lib/promise.js:2188:20)
at ControlFlow.wait (/usr/src/app/node_modules/selenium-webdriver/lib/promise.js:2517:12)
at Driver.wait (/usr/src/app/node_modules/selenium-webdriver/lib/webdriver.js:934:29)
at driver.findElement.sendKeys.then.then.then.then.then.then (/sitespeed.io/preRequisites.js:32:17)
at ManagedPromise.invokeCallback
(/usr/src/app/node_modules/selenium-webdriver/lib/promise.js:1376:14)
at TaskQueue.execute_ (/usr/src/app/node_modules/selenium-webdriver/lib/promise.js:3084:14)
at TaskQueue.executeNext_ (/usr/src/app/node_modules/selenium-webdriver/lib/promise.js:3067:27)
at asyncRun (/usr/src/app/node_modules/selenium-webdriver/lib/promise.js:2927:27)
at /usr/src/app/node_modules/selenium-webdriver/lib/promise.js:668:7
at
at process.tickCallback (internal/process/next_tick.js:188:7)
[2018-08-01 05:46:58] INFO: 0
[2018-08-01 05:46:58] INFO: Starting chrome for analysing https://cde-mss-web-qa.aws.na.sysco.net/app/catalog 1 time(s)
[2018-08-01 05:46:58] INFO: Testing url https://cde-mss-web-qa.aws.na.sysco.net/app/catalog iteration 1
0
[2018-08-01 05:49:07] ERROR: NoSuchElementError: no such element: Unable to locate element: {"method":"css selector","selector":"*[name="username"]"}
(Session info: chrome=68.0.3440.75)
(Driver info: chromedriver=2.40.565383 (76257d1ab79276b2d53ee976b2c3e3b9f335cde7),platform=Linux 4.9.93-linuxkit-aufs x86_64)
(Session info: chrome=68.0.3440.75)
(Driver info: chromedriver=2.40.565383 (76257d1ab79276b2d53ee976b2c3e3b9f335cde7),platform=Linux 4.9.93-linuxkit-aufs x86_64)
at Object.checkLegacyResponse (/usr/src/app/node_modules/selenium-webdriver/lib/error.js:546:15)
at parseHttpResponse (/usr/src/app/node_modules/selenium-webdriver/lib/http.js:509:13)
at doSend.then.response (/usr/src/app/node_modules/selenium-webdriver/lib/http.js:441:30)
at
at process.tickCallback (internal/process/next_tick.js:188:7)
From: Task: WebDriver.findElement(By(css selector, *[name="username"]))
at Driver.schedule (/usr/src/app/node_modules/selenium-webdriver/lib/webdriver.js:807:17)
at Driver.findElement (/usr/src/app/node_modules/selenium-webdriver/lib/webdriver.js:1014:17)
at driver.get.then (/sitespeed.io/preRequisites.js:13:25)
at ManagedPromise.invokeCallback
(/usr/src/app/node_modules/selenium-webdriver/lib/promise.js:1376:14)
at TaskQueue.execute
(/usr/src/app/node_modules/selenium-webdriver/lib/promise.js:3084:14)
at TaskQueue.executeNext_ (/usr/src/app/node_modules/selenium-webdriver/lib/promise.js:3067:27)
at asyncRun (/usr/src/app/node_modules/selenium-webdriver/lib/promise.js:2927:27)
at /usr/src/app/node_modules/selenium-webdriver/lib/promise.js:668:7
at
at process.tickCallback (internal/process/next_tick.js:188:7)
From: Task: WebElement.sendKeys()
at Driver.schedule (/usr/src/app/node_modules/selenium-webdriver/lib/webdriver.js:807:17)
at WebElementPromise.schedule
(/usr/src/app/node_modules/selenium-webdriver/lib/webdriver.js:2010:25)
at WebElementPromise.sendKeys (/usr/src/app/node_modules/selenium-webdriver/lib/webdriver.js:2174:19)
at driver.get.then (/sitespeed.io/preRequisites.js:13:58)
at ManagedPromise.invokeCallback_ (/usr/src/app/node_modules/selenium-webdriver/lib/promise.js:1376:14)
at TaskQueue.execute_ (/usr/src/app/node_modules/selenium-webdriver/lib/promise.js:3084:14)
at TaskQueue.executeNext_ (/usr/src/app/node_modules/selenium-webdriver/lib/promise.js:3067:27)
at asyncRun (/usr/src/app/node_modules/selenium-webdriver/lib/promise.js:2927:27)
at /usr/src/app/node_modules/selenium-webdriver/lib/promise.js:668:7
at
at process._tickCallback (internal/process/next_tick.js:188:7)

@soulgalore
Copy link
Member

Hi @jayanathkarunarathna

But that preScript executes before each url which should not happen.

I'm not sure I fully understand? Each time the browser test each URL (and each run per URL), the browser cache is cleared and the browser starts with a new session, you can see the flow here:
https://www.sitespeed.io/documentation/sitespeed.io/browsers/#how-does-it-work-behind-the-scene

So if you test multiple URLs, it will always run the preScript per run per URL. If you need to have different preScripts per URL you either need to design your preScript to handle that start sitespeed.io once per URL you test.

Best
Peter

@jkar9328
Copy link

jkar9328 commented Aug 1, 2018

hi @soulgalore
Thanks for the quick reply. My requirement was to test multiple pages of same application. That's why I had above requirement. I have overcome my issue by adding a postScript. Thank you again.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants