Screening is a testing tool for Montaged-based applications. It runs as a Node.js web application and creates its own server.
Visit Screening Quickstart for instructions on how to get started with Screening.
Screening is a testing tool for Montaged-based applications. It runs as a Node.js web application and creates its own server.
Visit Screening Quickstart for instructions on how to get started with Screening.
IDART bug 3629
Browser: 14.0.835.202.
Set preferences:
Global Timeout: 200
Sync mode: auto.
Execute the following ninja script on webdriver agent:
// ==== Start Recorded Script, Mon Oct 24 2011 10:46:09 GMT-0700 (PDT)====
var agent = new Agent();
agent.gotoUrl("/webapps/js-authoringtool/MainApp/index.html");
agent.setWindowSize(1154, 858);
agent.element("//[@id='preloader']").mouseMoves([{"x":674,"y":10,"duration":0},{"x":663,"y":120,"duration":30},{"x":700,"y":216,"duration":248},{"x":685,"y":216,"duration":226}]);
agent.element("//[@id='iframeContainer']").setScrollTo(700,260);
agent.element("//[@id='preloader']").mouseMoves([{"x":685,"y":216,"duration":0},{"x":530,"duration":2197}]);
agent.element("//[@id='topMenu']").mouseMoves([{"x":531,"y":2,"duration":0},{"x":526,"y":16,"duration":14}]);
agent.element("//[@id='topSplitter']").mousemove({"clientX":522,"clientY":34});
agent.element("//[@id='toolsProperties']").mousemove({"clientX":517,"clientY":54});
agent.element("//[@id='openDocuments']").mouseMoves([{"x":506,"y":98,"duration":0},{"x":502,"y":113,"duration":9}]);
agent.element("//[@id='stageCanvas']").mouseMoves([{"x":496,"y":136,"duration":0},{"x":478,"y":208,"duration":83},{"x":456,"y":230,"duration":50},{"x":210,"y":211,"duration":217},{"x":154,"y":230,"duration":33},{"x":119,"y":252,"duration":17},{"x":81,"y":296,"duration":1118}]);
agent.element("//[@id='toolsList-toolscontainer-toolbutton-9']/DIV").mousemove({"clientX":35,"clientY":317});
agent.element("//[@id='stageCanvas']").mouseMoves([{"x":231,"y":453,"duration":0},{"x":345,"y":400,"duration":15},{"x":594,"y":310,"duration":17},{"x":809,"y":268,"duration":17}]);
agent.element("//[@id='cp_spectrum']/CANVAS").mouseMoves([{"x":926,"y":256,"duration":0},{"x":926,"y":256,"duration":616}]);
agent.element("//[@id='rulerLeft']").mousemove({"clientX":64,"clientY":246});
agent.element("//[@id='toolsList-toolscontainer']").mouseMoves([{"x":55,"y":254,"duration":0},{"x":54,"y":257,"duration":117}]);
agent.element("//[@id='toolsList-toolscontainer-toolbutton-6']/DIV").mousemove({"clientX":51,"clientY":262});
agent.element("//[@id='toolsList-toolscontainer-toolbutton-7']/DIV")
.mouseMoves([{"x":45,"y":269,"duration":0},{"x":41,"y":277,"duration":53}])
.click({"clientX":41,"which":1,"clientY":277,"detail":1})
.mouseMoves([{"x":40,"y":277,"duration":0},{"x":49,"y":269,"duration":316}]);
/agent.element("//[@id='toolsList-toolscontainer']").mousemove({"clientX":57,"clientY":261});
agent.element("//[@id='rulerLeft']").mouseMoves([{"x":65,"y":257,"duration":0},{"x":71,"y":251,"duration":33}]);
agent.element("//[@id='stageCanvas']").mouseMoves([{"x":80,"y":244,"duration":0},{"x":109,"y":214,"duration":66},{"x":163,"y":134,"duration":150}]);
agent.element("//[@id='rulerTop']").mousemove({"clientX":169,"clientY":124});
agent.element("//[@id='openDocuments']").mouseMoves([{"x":175,"y":111,"duration":0},{"x":181,"y":95,"duration":183}]);
agent.element("//[@id='topPanel']").mousemove({"clientX":189,"clientY":83});
agent.element("//[@id='toolsProperties']").mouseMoves([{"x":194,"y":75,"duration":0},{"x":199,"y":67,"duration":16}]);
agent.element("//[@id='toolsProperties-shapeProperties-strokeControl']/SPAN[1]").mousemove({"clientX":203,"clientY":58});
agent.element("//[@id='toolsProperties-shapeProperties-strokeControl']/SPAN[2]").mousemove({"clientX":207,"clientY":51});
agent.element("//[@id='toolsProperties-shapeProperties-strokeControl']").mousemove({"clientX":208,"clientY":47});
agent.element("//[@id='topSplitter']").mouseMoves([{"x":210,"y":41,"duration":0},{"x":204,"y":43,"duration":183}]);
agent.element("//[@id='toolsProperties']").mousemove({"clientX":203,"clientY":45});
/
agent.element("//[@id='toolsProperties-shapeProperties-strokeControl']").click();
agent.element("//*[@id='toolsProperties-shapeProperties-strokeControl']/INPUT[1]").focus();
var a = agent.element("//*[@id='toolsProperties-shapeProperties-strokeControl']/INPUT[1]").getText();
agent.element("//*[@id='toolsProperties-shapeProperties-strokeControl']/INPUT[1]").setAttribute('value',"");
//agent.element("//[@id='toolsProperties-shapeProperties-strokeControl']/INPUT[1]").keypress(13);
agent.element("//[@id='toolsProperties-shapeProperties-strokeControl']/INPUT[1]").keypress({"keyIdentifier":"U+0031","which":49});
//agent.element("//*[@id='toolsProperties-shapeProperties-strokeControl']/INPUT[1]").keyPress({"keyIdentifier":"U+0008","which":8});
agent.element("//*[@id='toolsProperties-shapeProperties-strokeControl']/INPUT[1]").keyPresses("ABC");
agent.element("//*[@id='toolsProperties-shapeProperties-strokeControl']/SPAN[1]").keyPress("2");
//var a = agent.element("//*[@id='toolsProperties-shapeProperties-strokeControl']/SPAN[1]").getAttribute('innerHTML');
console.log(a);
agent.element("//[@id='toolsProperties-shapeProperties-strokeControl']/SPAN[1]").setAttribute('innerText',"23");
agent.element("//[@id='toolsProperties-shapeProperties-strokeControl']/SPAN[1]").dispatchEvent('keydown','3');
agent.element("//[@id='toolsProperties-shapeProperties-strokeControl']/SPAN[1]").dispatchEvent('keypress','3');
agent.element("//[@id='toolsProperties-shapeProperties-strokeControl']/SPAN[1]").dispatchEvent('keyup','3');
agent.element("//*[@id='toolsProperties-shapeProperties-strokeControl']/SPAN[1]").keyPresses("ABC");
a = agent.element("//*[@id='toolsProperties-shapeProperties-strokeControl']/SPAN[1]").getAttribute('innerHTML');
console.log(a);
agent.wait(8000);
/agent.element("//[@id='toolsProperties-shapeProperties-strokeControl']/SPAN[1]")
.mouseMoves([{"x":201,"y":49,"duration":0},{"x":205,"y":63,"duration":489}])
.mousedown({"clientX":205,"which":1,"clientY":63,"detail":1});
agent.wait(279);
agent.element("//[@id='toolsProperties-shapeProperties-strokeControl']/SPAN[1]").mousemove({"clientX":206,"which":1,"clientY":63});
agent.element("//[@id='toolsProperties']").mouseMoves([{"x":207,"y":63,"duration":0},{"x":212,"y":63,"duration":251}]);
agent.element("//[@id='toolsProperties-shapeProperties-strokeControl']/SPAN[2]")
.mouseMoves([{"x":213,"y":62,"duration":0},{"x":221,"y":60,"duration":1413}])
.mouseup({"clientX":221,"which":1,"clientY":60,"detail":1})
.mouseMoves([{"x":221,"y":60,"duration":0},{"x":220,"y":60,"duration":315}]);
agent.element("//[@id='toolsProperties']").mousemove({"clientX":220,"clientY":67});
agent.element("//[@id='topPanel']").mousemove({"clientX":222,"clientY":77});
agent.element("//[@id='openDocuments']").mouseMoves([{"x":226,"y":93,"duration":0},{"x":230,"y":107,"duration":17}]);
agent.element("//[@id='rulerTop']").mousemove({"clientX":237,"clientY":122});
agent.element("//[@id='stageCanvas']")
.mouseMoves([{"x":242,"y":138,"duration":0},{"x":261,"y":213,"duration":167},{"x":254,"y":210,"duration":199}])
.mousedown({"clientX":254,"which":1,"clientY":210,"detail":1})
.mouseMoves([{"x":257,"y":209,"duration":0},{"x":394,"y":217,"duration":199},{"x":437,"y":347,"duration":317}])
.mouseup({"clientX":437,"which":1,"clientY":347,"detail":1});
agent.wait(322);
agent.element("//[@id='stageCanvas']")
.click({"clientX":437,"which":1,"clientY":347,"detail":1})
.mouseMoves([{"x":436,"y":347,"duration":0},{"x":248,"y":308,"duration":85},{"x":157,"y":266,"duration":33},{"x":95,"y":226,"duration":17}]);
agent.element("//[@id='toolsList-toolscontainer-toolbutton-3']/DIV").mousemove({"clientX":43,"clientY":182});
agent.wait(920);
agent.element("//[@id='editPencil']").mousemove({"clientX":885,"clientY":60});
agent.element("//[@id='toolsProperties']").mousemove({"clientX":943,"clientY":73});
agent.element("//*[@id='openDocuments']").mouseMoves([{"x":746,"y":99,"duration":0},{"x":746,"y":99,"duration":5}]);
// ==== End Recorded Script ====
*/
Execution fails with exception:
Exception 41 / 7
Element must be displayed to click
3868 ms
There are a number of layout issues in Firefox due to only using -webkit- prefixes ::sad panda::
Iโve not spent a huge time looking at it, but I got it mostly working by adding -moz- prefix as well for all the box properties.
A number of gradients and box-shadows also have missing -moz- (and other) prefixes.
There are still issues I've not had the chance to look at properly when fixing these issues. They may or may not be easy to fix:
Fix those and you'e 99% of the way to making the layout to work in Firefox.
IDART bug # 3585
Jasmine tests which uses phantomjs in rest-api-spec.js fails.
To execute rest-api-spec.js , screening server is set up at port 8082 on the local machine.
Phantomjs is used to create an iframe agent which is supposed to connect to screening server at port number 8082.
But in the file public/agent/lib/iframe-agent.js, port number 8081 is hardcoded. Because of this, the iframe agent tries to connect to screening server at port number 8081 which doesnt exist. But its supposed to connect to screening server at port 8082.
IDART bug # 3578
SyntaxError: Unexpected token ILLEGAL
at Object.parse (native)
at [object Object].callback (/Users/ntvd76/workspace/screening/server/lib/webdriver/util.js:185:36)
at [object Object]. (/Users/ntvd76/workspace/screening/server/node_modules/request/main.js:294:21)
at [object Object].emit (events.js:64:17)
at IncomingMessage. (/Users/ntvd76/workspace/screening/server/node_modules/request/main.js:281:54)
at IncomingMessage.emit (events.js:81:20)
at HTTPParser.onMessageComplete (http.js:133:23)
at Socket.ondata (http.js:1231:22)
at Socket._onReadable (net.js:683:27)
at IOWatcher.onReadable as callback
I haven't looked into this too much, and the REST API might be appropriate, but how would we run tests in screening automatically, on a post-commit git hook for example?
[I.M.] Currently our UI allows execution of one test case at a time, which is bad. We should be able to execute scripts in batch mode. Can you log a feature request for us? Currently you can execute multiple tests trough REST API.
Run Component Test. You'll get an exception:
//form/div[2]/input[contains(@Class, 'montage-textfield')]: The element could not be found
IDART bug # 3571
S/w : Screening v0.1.4
Set-Up:
Nodejs : Mac-OS-X,
Control-Room: Mac-OS-X +Chrome
Agent-Type: iFrame
Agent-platform: Mac-OS-X,
Agent-Browser: Chrome
DataBase Platform: Mac-OS-X.
This bug is the continuation of the problem noted in Jira # 3570 [DOM can't be quit after Record+Pause ].
The 'resume recording' operation fails to show the feedback on Url correctly and:
the DIV numbers recorded in the script for any attempted action on the Url are incorrect.
[TC#045, BAT]
Shown below is the of script recorded for /screening/control-room/ui-sample.html, after 'resume'.
File of recorded-script is RecordPause-Resume-F2.js, attached.
Attempt to RUN the recorded file: Test-Result on iframe agent results in the error below:
EXCEPTION Object 181 / 7 No such element! Query was: "/HTML/BODY/DIV[13]" (Error code: 7)
====================== Fragment begin....
// TOP OF FILE...
// Record, pause, resume from Control Room GUI.
//i-Frame agent selected,
// gotoUrl is ... ui-sample.html .
// ==== Start Recorded Script, Fri Oct 07 2011 18:52:51 GMT-0700 (PDT)====
var agent = new Agent();
agent.gotoUrl("/screening/control-room/ui-sample.html");
...
...
... < first REC session.. contents OK ...>
//Paused... Return to Agent with Resume-recording:
// ==== End Recorded Script ====
// ==== Start Recorded Script, Fri Oct 07 2011 18:56:40 GMT-0700 (PDT)====
//var agent = new Agent(); commented out this repeated Agent creation..
//agent.setSize(1329, 730); .commented out this: known bug.
// Note next line: there aren't 13 DIVs in the goto Url ui-sample.html.
agent.element("/HTML/BODY/DIV[13]")
.mouseMoves([{"x":236,"y":163,"duration":0},{"x":210,"y":154,"duration":16},{"x":183,"y":5,"duration":1953},{"x":241,"y":94,"duration":66},{"x":316,"y":160,"duration":83}])
.mousedown({"clientX":316,"which":1,"clientY":160,"detail":1})
.mouseup({"clientX":316,"which":1,"clientY":160,"detail":1})
.click({"clientX":316,"which":1,"clientY":160,"detail":1})
.mouseMoves([{"x":316,"y":159,"duration":0},{"x":261,"y":104,"duration":117},{"x":259,"y":94,"duration":166},{"x":273,"y":94,"duration":84}])
.mousedown({"clientX":273,"which":1,"clientY":94,"detail":1})
.mouseup({"clientX":273,"which":1,"clientY":94,"detail":1})
.click({"clientX":273,"which":1,"clientY":94,"detail":1})
.mouseMoves([{"x":277,"y":95,"duration":0},{"x":262,"y":100,"duration":150}]);
agent.element("/HTML/BODY").keydown({"keyIdentifier":"Meta","metaKey":true,"which":91});
agent.wait(632);
agent.element("/HTML/BODY").keydown({"shiftKey":true,"keyIdentifier":"Shift","metaKey":true,"which":16});
agent.element("/HTML/BODY/DIV[13]")
.mouseMoves([{"x":1235,"y":713,"duration":0},{"x":936,"y":477,"duration":84},{"x":749,"y":300,"duration":50},{"x":611,"y":255,"duration":2118},{"x":445,"y":250,"duration":58},{"x":353,"y":265,"duration":9},{"x":263,"y":293,"duration":17},{"x":169,"y":337,"duration":16},{"x":75,"y":400,"duration":17},{"x":14,"y":459,"duration":17},{"x":383,"y":61,"duration":48055}])
.mousedown({"clientX":383,"which":1,"clientY":61,"detail":1})
.mouseup({"clientX":383,"which":1,"clientY":61,"detail":1})
.click({"clientX":383,"which":1,"clientY":61,"detail":1})
.mousedown({"clientX":383,"which":3,"button":2,"clientY":61,"detail":2})
.mousemove({"clientX":383,"clientY":61});
// End of fragment
Test-Result of RUN recorded-script on iframe agent results in the error below:
EXCEPTION Object 181 / 7 No such element! Query was: "/HTML/BODY/DIV[13]" (Error code: 7)
IDART bug # 3570
The results seen in the failed Record+Pause+Resume operation on the URL are in addition to:
suspected DIV element counts going off during resume-recording - elements not on the page are attempted to be addressed in the recording.
[ Playback will show this last result].
TC#045 - on iFrame, not Webdriver
Fails with DOM inspector turned On after pause & resume. Blocks of color on url, no response to user mouse movements, kboard.
Update submodule and modify the existing code to make it compatible.
IDART bug # 3590
We need to have a setting to leave an AUT open after completion of recording or playback
ChromeDriver Version 18.0.1022.0 is not working and throwing "NSAutoreleaseNoPool()- autoreleased with no pool in place" error.
Started ChromeDriver
port=9515
version=18.0.1022.0
log=/Users/knft38/chromedriver.log
2012-01-31 16:48:08.603 chromedriver 2[14426:1203] *** __NSAutoreleaseNoPool(): Object 0x400330 of class NSPathStore2 autoreleased with no pool in place - just leaking
2012-01-31 16:48:08.607 chromedriver 2[14426:1203] *** __NSAutoreleaseNoPool(): Object 0x403770 of class NSPathStore2 autoreleased with no pool in place - just leaking
2012-01-31 16:48:08.607 chromedriver 2[14426:1203] *** __NSAutoreleaseNoPool(): Object 0x4004c0 of class NSConcreteData autoreleased with no pool in place - just leaking
2012-01-31 16:48:08.607 chromedriver 2[14426:1203] *** __NSAutoreleaseNoPool(): Object 0xa01794d8 of class NSCFString autoreleased with no pool in place - just leaking
2012-01-31 16:48:08.608 chromedriver 2[14426:1203] *** __NSAutoreleaseNoPool(): Object 0x400bb0 of class NSBundle autoreleased with no pool in place - just leaking
2012-01-31 16:48:38.604 chromedriver 2[14426:1403] *** __NSAutoreleaseNoPool(): Object 0x117020 of class NSConcreteData autoreleased with no pool in place - just leaking
2012-01-31 16:48:38.605 chromedriver 2[14426:1403] *** __NSAutoreleaseNoPool(): Object 0xa01794d8 of class NSCFString autoreleased with no pool in place - just leaking
2012-01-31 16:48:38.605 chromedriver 2[14426:1403] *** __NSAutoreleaseNoPool(): Object 0x400bb0 of class NSBundle autoreleased with no pool in place - just leaking
2012-01-31 16:49:08.603 chromedriver 2[14426:1503] *** __NSAutoreleaseNoPool(): Object 0x4005d0 of class NSConcreteData autoreleased with no pool in place - just leaking
2012-01-31 16:49:08.604 chromedriver 2[14426:1503] *** __NSAutoreleaseNoPool(): Object 0xa01794d8 of class NSCFString autoreleased with no pool in place - just leaking
2012-01-31 16:49:08.605 chromedriver 2[14426:1503] *** __NSAutoreleaseNoPool(): Object 0x400bb0 of class NSBundle autoreleased with no pool in place - just leaking
2012-01-31 16:49:38.603 chromedriver 2[14426:1303] *** __NSAutoreleaseNoPool(): Object 0x403850 of class NSConcreteData autoreleased with no pool in place - just leaking
2012-01-31 16:49:38.604 chromedriver 2[14426:1303] *** __NSAutoreleaseNoPool(): Object 0xa01794d8 of class NSCFString autoreleased with no pool in place - just leaking
2012-01-31 16:49:38.604 chromedriver 2[14426:1303] *** __NSAutoreleaseNoPool(): Object 0x400bb0 of class NSBundle autoreleased with no pool in place - just leaking
IDART bug # 3541
File-upload (drag & drop via Finder GUI ) permits drop of file-icon into wrong panel on Control-Room.
If a ( script) file is selected on the platform, and dropped into the file-list of Control-Room in the files list pane, then the C-R browser (Chrome) takes that script file as a text file to render in browser, and over-writes the Control-Room.
Environment set up.
Nodejs : Mac-OS-X,
Control-Room: Mac-OS-X +Chrome
Agent-Type: --not required here --
Agent-platform: Mac-OS-X,
Agent-Browser: Chrome
DataBase Platform: Mac-OS-X.
IDART bug # 3611
Preferences and All Results buttons should be placed on the left side panel next to the "New" and "Download All" buttons as they are not specific to an individual test script.
When script run is finished user gets a pop-up message with results. When user switches back to the control room after viewing test results selection of a new script is problematic. I have to click 3-4 times on a script to get it selected.
A Buffer with binary encoding is being used here and quoting the node.js docs:
'binary' - A way of encoding raw binary data into strings by using only the first 8 bits of each character. This encoding method is deprecated and should be avoided in favor of Buffer objects where possible. This encoding will be removed in future versions of Node.
I didn't want to spend too much time finding a good replacement for this because we have other bugs. And this still works with node 0.7
Remove webapps hosting from the debug server
"Your script has been added" for 1 script and "Your scripts have been added" for multiple scripts
IDART bug # 3565
A user will "re-load" the Control-Room page to determine the exact agents connected to the Control Room,
and this will erase all work done on the script in the edit-script panel,
in the case of the "Reload" operation being launched via right-mouse-click when user was @ edit-panel .
Mac-OS-X for node, server, C-R platform; C-R browser is Chrome.
Currently (v 0.1.4) screening will re-set to the file "wdyl-search-test" (.js) on a re-load requested as above.
This design problem is complicated .. depends on how the reload originated, etc.
// comment 1
// comment 2
// We are done.
DO NOT SAVE the edits.
3. With mouse on the edit-panel or the edit-header-panel, click the mouse-right-button fully,
the menu with "Reload" option should come up.
(Otherwise, click the left-mouse-button completely and retry the right-button click again.)
IDART bug # 3618
v0.1.5,
All-Mac-OSX environment, browser=Chrome.
A test was run, and the test-result-Id was requested, with the keyword accidentally indicating 'scripts' instead of test_results.
This resulted in mongodb returning apparently an empty record;
server fails to recover ( expecting a full test-result record?).
(Correct query would use 'test_results' , not 'scripts' ) .
GET /screening/api/v1/scripts/4ea1b3678dfe82f931000005?api_key=5150 HTTP/1.1
User-Agent: curl/7.19.7 (universal-apple-darwin10.0) libcurl/7.19.7 OpenSSL/0.9.8r zlib/1.2.3
Host: localhost:8081
Accept: /
GET Scripts/:id 4ea1b3678dfe82f931000005
Couldn't connect to MongoDB, plese check /docs/MongoDb.md for info on how to setup the MongoDB server undefined
null-c8bcc89cfb91:screening rwjm37$
< node server > process has died and needs to be re-launched.
Eliseo,
We need to do more cleanups at assure our scripts continue to run. Now I see this exception -
Exception 27 / 9
Failed to parse command data: Line: 1, column: 14, Syntax error.
Data: {"value":["๎"
in line: celsius.sendKeys(Key.BACKSPACE);
Please fix
We should timeout after a given timeout value and give an exception in the results if an app is not loaded (or if an element is not found), but not crash node server!
/Users/ntvd76/workspace/screening/server/lib/webdriver/util.js:232
var retBody = JSON.parse(body);
^
ReferenceError: body is not defined
at IncomingMessage. (/Users/ntvd76/workspace/screening/server/lib/webdriver/util.js:232:17)
at IncomingMessage.emit (events.js:81:20)
at HTTPParser.onMessageComplete (http.js:133:23)
at Socket.ondata (http.js:1231:22)
at Socket._onReadable (net.js:683:27)
at IOWatcher.onReadable as callback
It would be nice if the message you see after successfully starting screening included the URL to the control room app, since it's the main UI.
So you'd see something like this:
$ node server/
[agents] express app was mounted.
...
Screening Server running on port 8081 [development]
Screening Control Room: http://localhost:8081/screening/control-room/index.html
Connected to MongoDB server on localhost:27017, database: screening
Found a webdriver instance running at http://localhost:9515. Added it as an Agent by default.
When I try and record with an attached Chrome driver nothing happens. I click "Stop recording" and the following is placed in the editor:
{"error":"Cannot call method 'emit' of undefined","stack":"TypeError: Cannot call method 'emit' of undefined\n at Function.<anonymous> (/Users/xxxxxx/Documents/projects/screening/server/lib/webdriver-agent.js:158:20)\n at /Users/xxxxxx/Documents/projects/screening/server/rest-api/agents.js:162:28\n at callbacks (/Users/xxxxxx/Documents/projects/screening/server/node_modules/express/lib/router/index.js:272:11)\n at param (/Users/xxxxxx/Documents/projects/screening/server/node_modules/express/lib/router/index.js:246:11)\n at param (/Users/xxxxxx/Documents/projects/screening/server/node_modules/express/lib/router/index.js:243:11)\n at pass (/Users/xxxxxx/Documents/projects/screening/server/node_modules/express/lib/router/index.js:253:5)\n at Router._dispatch (/Users/xxxxxx/Documents/projects/screening/server/node_modules/express/lib/router/index.js:280:4)\n at Object.handle (/Users/xxxxxx/Documents/projects/screening/server/node_modules/express/lib/router/index.js:45:10)\n at next (/Users/xxxxxx/Documents/projects/screening/server/node_modules/express/node_modules/connect/lib/http.js:203:15)\n at Object.handle (/Users/xxxxxx/Documents/projects/screening/server/node_modules/express/lib/http.js:83:5)"}
IDART bug 3579
WebDriver: mouseClick() api does not with chrome for web driver
script path : http://10.72.32.11/screening/api/v1/scripts/defect.js
gets an exception: Unable to locate element
var x = agent.element("//*[@id='monthdiv#7']");
x.mouseClick();
Results seen for webdriver
START Start test run /
Starting test run at 2011-10-07T22:10:34.797Z ms
PASS assertEqual 14 / 1
Actual value: "Calendar"
Expected value: "Calendar"
Message: Verification of the title
570 ms
EXCEPTION Exception 18 / 15
Unable to locate element
596 ms
END End test 46 /
End test run at 2011-10-07T22:10:35.723Z
926 ms
Works for Iframe Results of the script
START Start test run /
Starting test run at 2011-10-07T22:09:17.211Z
ms
PASS assertEqual 14 / 1
Actual value: "Calendar"
Expected value: "Calendar"
Message: Verification of the title
1230 ms
PASS assertContains 25 / 2
Actual value: "August 2011"
Expected value: "August"
Message: Verification of the month title after clicking on the month
4735 ms
END End test 46 /
End test run at 2011-10-07T22:09:22.950Z
5739 ms
IDART bug 3666
Currently chromedriver agent opens with a specific window size "agent.setWindowSize(927, 985);".
It should open as a full size browser window.
IDART bug 3635
Environment set up.
Nodejs : Mac-OS-X,
Agent-Type: iFrame
Agent-platform: Mac-OS-X
Agent-Browser: Chrome 15.0.874.106
Screening v0.1.5
Steps to reproduce
Actual Result
Playback is not showing any of the dragged montage components on stage.
Expected Result
Playback should show all dragged montage components on stage.
IDART bug 3642
Default scripts fail with 'agent is not defined' error.
0.1.5
Master Branch GIT (Today's fetch)
Steps to Reproduce
Results:
Test EXCEPTION - JSON error - agent is not defined - ARGUMENTS: agent (JSON's attached).
Expected Results:
Test to pass or information on how to get the tests to pass.
IDART bug 3633
Environment set up.
Nodejs : Mac-OS-X,
Agent-Type: iFrame
Agent-platform: Mac-OS-X
Agent-Browser: Chrome 15.0.874.106
Screening v0.1.5
Steps to reproduce
Actual Result
Playback is drawing Rectangle without applying any material on it.
Expected Result
Playback should draw Rectangle with material on it.
Open Screening Control Room. Do not select any script - right hand side should be fixed
We need to update existing scripts in sample_tests directory and create new scripts for:
uuid-generator app (Irina)
todo-mvc app (Irina)
temp-converter (Irina)
sink app (Brandon)
photofx app (Zack)
mixed-list app (Eliseo)
app-template app (Eliseo)
calculator (Irina)
IDART bug 3632
Screening:
Currently playback of our script display results in html format. Can we get those results via email?
This will help us to send our script result across the team.
IDART bug 3626
GUI flashes on each key entered in the search-text window
Flashes show a vertical white scroll bar in files-list, blue horizontal scroll-bar in editor top panel.
Chrome browser, on Mac.OSX environment.
Actual environment:
Screening v0.1.5+ , 10/24.
"Nodejs : Mac-OS-X,
Control-Room: Mac-OS-X +Chrome
DataBase Platform: Mac-OS-X.
Agent-Type: any
Agent-platform: - not used
Agent-Browser: - not used
When I run screening on a non-default port through node server --port=8082
adding a driver fails. I think it might be to do with websockets/socket.io and the access origin policy as there was an error in the console to this effect, although I can't reproduce it.
IDART bug # 3623
There are 2 issues here - on record and playback side, but I'm logging it as one bug.
Issue #1 - on recording part - we record record only "keyup" and "keydown" for special characters (not keypress). See the script below - "123" was recorded properly, but 3 "delete" keys are missing "keypress" event:
// ==== Start Recorded Script, Mon Oct 24 2011 15:52:21 GMT-0700 (PDT)====
var agent = new Agent();
agent.gotoUrl("/screening/sample.html");
agent.setWindowSize(1154, 858);
agent.element("/HTML").mouseMoves([{"duration":0},{"x":188,"y":1,"duration":2844}]);
agent.element("/HTML/BODY/H1").mousemove({"clientX":223,"clientY":22});
agent.element("/HTML/BODY").mouseMoves([{"x":277,"y":59,"duration":0},{"x":297,"y":73,"duration":16}]);
agent.element("/HTML/BODY/FORM").mousemove({"clientX":329,"clientY":97});
agent.element("/HTML/BODY/FORM/DIV[1]/LABEL").mousemove({"clientX":365,"clientY":117});
agent.element("/HTML/BODY/FORM/DIV[1]").mousemove({"clientX":399,"clientY":129});
agent.element("//[@id='slider']").mouseMoves([{"x":427,"y":136,"duration":0},{"x":486,"y":136,"duration":83}]);
agent.element("/HTML/BODY/FORM/DIV[1]").mousemove({"clientX":488,"clientY":132});
agent.element("//[@id='textField']")
.mouseMoves([{"x":489,"y":130,"duration":0},{"x":494,"y":108,"duration":216}])
.click({"clientX":494,"which":1,"clientY":108,"detail":1})
.mouseMoves([{"x":494,"y":109,"duration":0},{"x":495,"y":112,"duration":150}])
.keydown({"keyIdentifier":"U+0031","which":97})
.keypress({"keyIdentifier":"U+0031","which":49})
.keyup({"keyIdentifier":"U+0031","which":97});
agent.wait(751);
agent.element("//*[@id='textField']")
.keydown({"keyIdentifier":"U+0032","which":98})
.keypress({"keyIdentifier":"U+0032","which":50})
.keyup({"keyIdentifier":"U+0032","which":98});
agent.wait(334);
agent.element("//*[@id='textField']")
.keydown({"keyIdentifier":"U+0033","which":99})
.keypress({"keyIdentifier":"U+0033","which":51})
.keyup({"keyIdentifier":"U+0033","which":99});
agent.wait(2776);
agent.element("//*[@id='textField']")
.keydown({"keyIdentifier":"U+0008","which":8})
.keyup({"keyIdentifier":"U+0008","which":8});
agent.wait(865);
agent.element("//*[@id='textField']")
.keydown({"keyIdentifier":"U+0008","which":8})
.keyup({"keyIdentifier":"U+0008","which":8});
agent.wait(720);
agent.element("//*[@id='textField']")
.keydown({"keyIdentifier":"U+0008","which":8})
.keyup({"keyIdentifier":"U+0008","which":8})
.mouseMoves([{"x":493,"y":112,"duration":0},{"x":489,"y":129,"duration":383},{"x":464,"y":129,"duration":50}]);
agent.element("/HTML/BODY/FORM/DIV[1]").mousemove({"clientX":450,"clientY":128});
agent.element("/HTML/BODY/FORM/DIV[1]/LABEL").mouseMoves([{"x":419,"y":126,"duration":0},{"x":371,"y":125,"duration":16}]);
agent.element("/HTML/BODY/FORM").mousemove({"clientX":307,"clientY":125});
agent.element("/HTML/BODY").mouseMoves([{"x":274,"y":125,"duration":0},{"x":15,"y":127,"duration":67}]);
// ==== End Recorded Script ====
Issue #2 - iFrame agent doesn't playback special characters.
If you modify the script above to add "keypress" for "delete" like this:
agent.element("//*[@id='textField']")
.keydown({"keyIdentifier":"U+0008","which":8})
.keypress({"keyIdentifier":"U+0008","which":8})
.keyup({"keyIdentifier":"U+0008","which":8})
and playback the script you'll see it works properly through webdriver, but doesn't work (delete key is not pressed) in iFrame
The Default record URL path should be: " /webapps/screening/public/sample/sample.html" instead of "/screening/sample/sample.html"
@simurai has mentioned that he no longer depends on the styles added by the button group component. As such we should remove them. All that needs to stay is the div with the appropriate class.
IDART bug # 3576
Major feature is not yet implemented.
The user is supposed to be able to select (by mouse/keyboard operation in some manner) more than one existing agent, for 'Run' operation of the desired script.
Go to preferences screen. There used to be a button "Home" which would bring users back to control room. We have to either:
a) out the button back
b) open Preferences screen in a new tab (just like results screen)
Background and text color are the same which makes it hard to read.
IDART bug # 3536
"Major-Enhancement" request : will probably be extremely useful.
The All-Results html page has the columns as below:
Name Agent Script Start End Summary .
Name is initially undefined, to be updated as desired by user; Agents, Scripts sorting would be useful in multi-node perf. tests etc.
Currently ordered by Start(?) time.
Eliseo,
We had this issue when we moved to the DB, and you fixed it a while ago. Now I'm seeing the same symptoms: execute test-script, it fails with exception: The required script '_test-required-script' does not exist.
_test-required-script is in the DB. Please take a look
Pause Recording and Record buttons should toggle values to Resume Recording and Stop Recording respectively. They do not do it any more
It takes a while to load Screening for the first time. It also takes a while to switch from Preferences screen (by pressing Home button) to the main screen - in this scenario the last selected script shows no details - I have to refresh page which is annoying. Anything we can do about it?
Try to execute:
// ==== Start Recorded Script, Wed Feb 15 2012 12:46:37 GMT-0800 (PST)====
var agent = new Agent();
agent.gotoUrl("/screening/samples/sample.html");
agent.setWindowSize(927, 988);
agent.mouseMove([{"x":423,"y":128,"duration":0},{"x":423,"y":118,"duration":222}]);
agent.element("//*[@id='textField']")
.click(Mouse.LEFT,85,13)
.sendKeys("test");
agent.mouseMove([{"x":426,"y":119,"duration":0},{"x":555,"y":236,"duration":84},{"x":547,"y":202,"duration":233},{"x":395,"y":208,"duration":384},{"x":241,"y":226,"duration":133},{"x":319,"y":241,"duration":167},{"x":332,"y":237,"duration":16},{"x":361,"y":206,"duration":34},{"x":369,"y":182,"duration":33},{"x":363,"y":161,"duration":34},{"x":347,"y":151,"duration":33},{"x":325,"y":151,"duration":150},{"x":320,"y":143,"duration":100},{"x":310,"y":147,"duration":300}]);
agent.mouseDown(310,147);
agent.mouseMove([{"x":313,"y":147,"duration":0},{"x":385,"y":148,"duration":84},{"x":441,"y":139,"duration":83}]);
agent.mouseUp(441,139);
agent.mouseMove([{"x":443,"y":140,"duration":0},{"x":523,"y":193,"duration":150},{"x":634,"y":240,"duration":30},{"x":772,"y":261,"duration":49},{"x":869,"y":261,"duration":34},{"x":914,"y":253,"duration":17}]);
// ==== End Recorded Script ====
agent.wait(2000);
// ==== Start Recorded Script, Wed Feb 15 2012 12:46:52 GMT-0800 (PST)====
var agent = new Agent();
agent.mouseMove([{"x":393,"y":110,"duration":0},{"x":460,"y":148,"duration":251}]);
agent.element("//*[@id='textField']")
.sendKeys(Key.BACKSPACE)
.sendKeys(Key.BACKSPACE)
.sendKeys(Key.BACKSPACE);
agent.mouseMove([{"x":469,"y":152,"duration":0},{"x":486,"y":142,"duration":66},{"x":568,"y":141,"duration":50},{"x":858,"y":153,"duration":67}]);
// ==== End Recorded Script ====
assertEqual("t", agent.element("//*[@id='textField']").getText());
IDART bug # 3580
WebDriver: mouseClick() api does not with chrome for web driver
script path : http://10.72.32.11/screening/api/v1/scripts/defect.js
gets an exception: Unable to locate element
var x = agent.element("//*[@id='monthdiv#7']");
x.mouseClick();
Results seen for webdriver
START Start test run /
Starting test run at 2011-10-07T22:10:34.797Z ms
PASS assertEqual 14 / 1
Actual value: "Calendar"
Expected value: "Calendar"
Message: Verification of the title
570 ms
EXCEPTION Exception 18 / 15
Unable to locate element
596 ms
END End test 46 /
End test run at 2011-10-07T22:10:35.723Z
926 ms
Works for Iframe Results of the script
START Start test run /
Starting test run at 2011-10-07T22:09:17.211Z
ms
PASS assertEqual 14 / 1
Actual value: "Calendar"
Expected value: "Calendar"
Message: Verification of the title
1230 ms
PASS assertContains 25 / 2
Actual value: "August 2011"
Expected value: "August"
Message: Verification of the month title after clicking on the month
4735 ms
END End test 46 /
End test run at 2011-10-07T22:09:22.950Z
5739 ms
IDART bug 3628
While using the script file editor, unsaved updates in editor are not triggering a warning when
user moves over to the Preferences page.
On return to the main editor page, the file editor updates are lost.
Chrome browser, on Mac.OSX environment.
Actual environment:
Screening v0.1.5+ , 10/24.
"Nodejs : Mac-OS-X,
Control-Room: Mac-OS-X +Chrome
DataBase Platform: Mac-OS-X.
Agent-Type: not used
Agent-platform: - not used
Agent-Browser: - not used
3: Warning / disallowed action / autosave (dialog box) when EXITING the file-editor with updates
IDART bug # 3583
Inv dev branch execute the following script (on iFrame agent):
var agent = new Agent();
agent.gotoUrl("/screening/control-room/ui-sample.html");
var checkbox = agent.element("#testCheckbox");
assertFalse(checkbox.isChecked());
checkbox.click();
assertTrue(checkbox.isChecked());
Checkbox is not checked (the same script runs successfully on webdriver)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.