1+ var webdriver = require ( '/Users/ralphj/selenium/selenium-read-only/build/javascript/node/webdriver' ) ;
2+ var assert = require ( 'assert' ) ;
3+ var util = require ( 'util' )
4+
5+ var waitForAngular = function ( ) {
6+ util . puts ( 'Starting waitForAngular' ) ;
7+ driver . executeAsyncScript ( function ( ) {
8+ var callback = arguments [ arguments . length - 1 ] ;
9+ angular . element ( document . body ) . injector ( ) . get ( '$browser' ) . notifyWhenNoOutstandingRequests ( callback ) ;
10+ } ) ;
11+ util . puts ( 'Ending waitForAngular' ) ;
12+ } ;
13+
14+
15+ var driver = new webdriver . Builder ( ) .
16+ usingServer ( 'http://localhost:4444/wd/hub' ) .
17+ withCapabilities ( {
18+ 'browserName' : 'chrome' ,
19+ 'version' : '' ,
20+ 'platform' : 'ANY' ,
21+ 'javascriptEnabled' : true
22+ } ) .
23+ build ( ) ;
24+
25+ driver . manage ( ) . timeouts ( ) . setScriptTimeout ( 10000 ) ;
26+
27+ // driver.get('http://docs.angularjs.org/api/ng.$http');
28+
29+ driver . get ( 'http://localhost:8000/app/index.html' ) ;
30+ driver . sleep ( 2 ) ;
31+
32+ var sample1Button = driver . findElement ( webdriver . By . id ( 'sample1' ) ) ;
33+ var sample2Button = driver . findElement ( webdriver . By . id ( 'sample2' ) ) ;
34+ sample1Button . click ( ) ;
35+
36+ var fetchButton = driver . findElement ( webdriver . By . id ( 'fetch' ) ) ;
37+ fetchButton . click ( ) ;
38+
39+ // The quick RPC works fine.
40+ driver . findElement ( webdriver . By . id ( 'statuscode' ) ) . getText ( ) . then ( function ( text ) {
41+ assert . equal ( '200' , text ) ;
42+ } ) ;
43+ driver . findElement ( webdriver . By . id ( 'data' ) ) . getText ( ) . then ( function ( text ) {
44+ assert . equal ( 'diablo' , text ) ;
45+ } ) ;
46+
47+ // The slow one fails:
48+ sample2Button . click ( ) ;
49+ fetchButton . click ( ) ;
50+ // Would normally need driver.sleep(2) or something.
51+ waitForAngular ( ) ;
52+ driver . findElement ( webdriver . By . id ( 'statuscode' ) ) . getText ( ) . then ( function ( text ) {
53+ assert . equal ( '200' , text ) ;
54+ } ) ;
55+ waitForAngular ( ) ;
56+ driver . findElement ( webdriver . By . id ( 'data' ) ) . getText ( ) . then ( function ( text ) {
57+ assert . equal ( 'hello now' , text ) ;
58+ } ) ;
59+
60+
61+ driver . quit ( ) ;
62+
63+ // Original Angular scenario runner code
64+ /*
65+ describe("api/ng.$http", function() {
66+ beforeEach(function() {
67+ browser().navigateTo("index-nocache.html#!/api/ng.$http");
68+ });
69+
70+ it('should make an xhr GET request', function() {
71+ element(':button:contains("Sample GET")').click();
72+ element(':button:contains("fetch")').click();
73+ expect(binding('status')).toBe('200');
74+ expect(binding('data')).toMatch(/Hello, \$http!/);
75+ });
76+
77+ it('should make a JSONP request to angularjs.org', function() {
78+ element(':button:contains("Sample JSONP")').click();
79+ element(':button:contains("fetch")').click();
80+ expect(binding('status')).toBe('200');
81+ expect(binding('data')).toMatch(/Super Hero!/);
82+ });
83+
84+ it('should make JSONP request to invalid URL and invoke the error handler',
85+ function() {
86+ element(':button:contains("Invalid JSONP")').click();
87+ element(':button:contains("fetch")').click();
88+ expect(binding('status')).toBe('0');
89+ expect(binding('data')).toBe('Request failed');
90+ });
91+
92+ });
93+ */
0 commit comments