selenium-webdriver 3.0.0-beta-1 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/CHANGES.md +109 -0
  2. package/LICENSE +1 -1
  3. package/README.md +7 -6
  4. package/chrome.js +31 -128
  5. package/edge.js +13 -91
  6. package/example/chrome_android.js +18 -13
  7. package/example/chrome_mobile_emulation.js +19 -15
  8. package/example/google_search.js +11 -11
  9. package/example/google_search_generator.js +23 -18
  10. package/example/google_search_test.js +31 -17
  11. package/example/logging.js +9 -17
  12. package/example/parallel_flows.js +3 -0
  13. package/firefox/binary.js +17 -0
  14. package/firefox/index.js +198 -101
  15. package/firefox/profile.js +24 -3
  16. package/http/util.js +95 -59
  17. package/ie.js +6 -10
  18. package/index.js +636 -2
  19. package/lib/actions.js +18 -10
  20. package/lib/atoms/getAttribute.js +11 -0
  21. package/lib/atoms/isDisplayed.js +106 -0
  22. package/lib/firefox/amd64/libnoblur64.so +0 -0
  23. package/lib/firefox/i386/libnoblur.so +0 -0
  24. package/lib/firefox/webdriver.xpi +0 -0
  25. package/lib/http.js +159 -46
  26. package/lib/logging.js +7 -1
  27. package/lib/promise.js +602 -358
  28. package/lib/proxy.js +28 -0
  29. package/lib/session.js +1 -1
  30. package/lib/test/build.js +26 -28
  31. package/lib/test/data/formPage.html +1 -0
  32. package/lib/test/fileserver.js +12 -10
  33. package/lib/test/httpserver.js +4 -6
  34. package/lib/test/index.js +18 -11
  35. package/lib/test/promise.js +79 -0
  36. package/lib/webdriver.js +587 -479
  37. package/opera.js +12 -88
  38. package/package.json +13 -14
  39. package/phantomjs.js +7 -14
  40. package/remote/index.js +201 -30
  41. package/safari.js +62 -416
  42. package/test/actions_test.js +9 -11
  43. package/test/chrome/options_test.js +8 -8
  44. package/test/chrome/service_test.js +2 -2
  45. package/test/cookie_test.js +57 -57
  46. package/test/element_finding_test.js +201 -185
  47. package/test/execute_script_test.js +108 -111
  48. package/test/fingerprint_test.js +16 -11
  49. package/test/firefox/firefox_test.js +75 -49
  50. package/test/firefox/profile_test.js +1 -3
  51. package/test/http/util_test.js +21 -27
  52. package/test/io_test.js +2 -5
  53. package/test/lib/http_test.js +8 -6
  54. package/test/lib/promise_aplus_test.js +48 -44
  55. package/test/lib/promise_error_test.js +687 -611
  56. package/test/lib/promise_flow_test.js +1810 -1806
  57. package/test/lib/promise_generator_test.js +227 -225
  58. package/test/lib/promise_test.js +864 -835
  59. package/test/lib/until_test.js +1 -1
  60. package/test/lib/webdriver_test.js +520 -424
  61. package/test/logging_test.js +43 -45
  62. package/test/net/portprober_test.js +23 -24
  63. package/test/page_loading_test.js +84 -78
  64. package/test/phantomjs/execute_phantomjs_test.js +11 -25
  65. package/test/proxy_test.js +23 -23
  66. package/test/remote_test.js +22 -22
  67. package/test/safari_test.js +108 -0
  68. package/test/session_test.js +11 -10
  69. package/test/stale_element_test.js +18 -16
  70. package/test/tag_name_test.js +7 -5
  71. package/test/testing/assert_test.js +2 -3
  72. package/test/testing/index_test.js +163 -117
  73. package/test/upload_test.js +13 -13
  74. package/test/window_test.js +94 -70
  75. package/testing/index.js +176 -37
  76. package/builder.js +0 -553
  77. package/lib/safari/client.js +0 -56
@@ -40,125 +40,123 @@ test.suite(function(env) {
40
40
  driver = null;
41
41
  });
42
42
 
43
- test.afterEach(function() {
43
+ test.afterEach(function*() {
44
44
  if (driver) {
45
- driver.quit();
45
+ return driver.quit();
46
46
  }
47
47
  });
48
48
 
49
- test.it('can be disabled', function() {
49
+ test.it('can be disabled', function*() {
50
50
  var prefs = new logging.Preferences();
51
51
  prefs.setLevel(logging.Type.BROWSER, logging.Level.OFF);
52
52
 
53
- driver = env.builder()
53
+ driver = yield env.builder()
54
54
  .setLoggingPrefs(prefs)
55
55
  .build();
56
56
 
57
- driver.get(dataUrl(
57
+ yield driver.get(dataUrl(
58
58
  '<!DOCTYPE html><script>',
59
59
  'console.info("hello");',
60
60
  'console.warn("this is a warning");',
61
61
  'console.error("and this is an error");',
62
62
  '</script>'));
63
- driver.manage().logs().get(logging.Type.BROWSER).then(function(entries) {
64
- assert(entries.length).equalTo(0);
65
- });
63
+ return driver.manage().logs().get(logging.Type.BROWSER)
64
+ .then(entries => assert(entries.length).equalTo(0));
66
65
  });
67
66
 
68
67
  // Firefox does not capture JS error console log messages.
69
68
  test.ignore(env.browsers(Browser.FIREFOX, 'legacy-firefox')).
70
- it('can be turned down', function() {
69
+ it('can be turned down', function*() {
71
70
  var prefs = new logging.Preferences();
72
71
  prefs.setLevel(logging.Type.BROWSER, logging.Level.SEVERE);
73
72
 
74
- driver = env.builder()
73
+ driver = yield env.builder()
75
74
  .setLoggingPrefs(prefs)
76
75
  .build();
77
76
 
78
- driver.get(dataUrl(
77
+ yield driver.get(dataUrl(
79
78
  '<!DOCTYPE html><script>',
80
79
  'console.info("hello");',
81
80
  'console.warn("this is a warning");',
82
81
  'console.error("and this is an error");',
83
82
  '</script>'));
84
- driver.manage().logs().get(logging.Type.BROWSER).then(function(entries) {
85
- assert(entries.length).equalTo(1);
86
- assert(entries[0].level.name).equalTo('SEVERE');
87
- assert(entries[0].message).endsWith('and this is an error');
88
- });
83
+ return driver.manage().logs().get(logging.Type.BROWSER)
84
+ .then(function(entries) {
85
+ assert(entries.length).equalTo(1);
86
+ assert(entries[0].level.name).equalTo('SEVERE');
87
+ assert(entries[0].message).matches(/.*\"?and this is an error\"?/);
88
+ });
89
89
  });
90
90
 
91
91
  // Firefox does not capture JS error console log messages.
92
92
  test.ignore(env.browsers(Browser.FIREFOX, 'legacy-firefox')).
93
- it('can be made verbose', function() {
93
+ it('can be made verbose', function*() {
94
94
  var prefs = new logging.Preferences();
95
95
  prefs.setLevel(logging.Type.BROWSER, logging.Level.DEBUG);
96
96
 
97
- driver = env.builder()
97
+ driver = yield env.builder()
98
98
  .setLoggingPrefs(prefs)
99
99
  .build();
100
100
 
101
- driver.get(dataUrl(
101
+ yield driver.get(dataUrl(
102
102
  '<!DOCTYPE html><script>',
103
103
  'console.debug("hello");',
104
104
  'console.warn("this is a warning");',
105
105
  'console.error("and this is an error");',
106
106
  '</script>'));
107
- driver.manage().logs().get(logging.Type.BROWSER).then(function(entries) {
108
- assert(entries.length).equalTo(3);
109
- assert(entries[0].level.name).equalTo('DEBUG');
110
- assert(entries[0].message).endsWith('hello');
111
-
112
- assert(entries[1].level.name).equalTo('WARNING');
113
- assert(entries[1].message).endsWith('this is a warning');
114
-
115
- assert(entries[2].level.name).equalTo('SEVERE');
116
- assert(entries[2].message).endsWith('and this is an error');
117
- });
107
+ return driver.manage().logs().get(logging.Type.BROWSER)
108
+ .then(function(entries) {
109
+ assert(entries.length).equalTo(3);
110
+ assert(entries[0].level.name).equalTo('DEBUG');
111
+ assert(entries[0].message).matches(/.*\"?hello\"?/);
112
+
113
+ assert(entries[1].level.name).equalTo('WARNING');
114
+ assert(entries[1].message).matches(/.*\"?this is a warning\"?/);
115
+
116
+ assert(entries[2].level.name).equalTo('SEVERE');
117
+ assert(entries[2].message).matches(/.*\"?and this is an error\"?/);
118
+ });
118
119
  });
119
120
 
120
121
  // Firefox does not capture JS error console log messages.
121
122
  test.ignore(env.browsers(Browser.FIREFOX, 'legacy-firefox')).
122
- it('clears records after retrieval', function() {
123
+ it('clears records after retrieval', function*() {
123
124
  var prefs = new logging.Preferences();
124
125
  prefs.setLevel(logging.Type.BROWSER, logging.Level.DEBUG);
125
126
 
126
- driver = env.builder()
127
+ driver = yield env.builder()
127
128
  .setLoggingPrefs(prefs)
128
129
  .build();
129
130
 
130
- driver.get(dataUrl(
131
+ yield driver.get(dataUrl(
131
132
  '<!DOCTYPE html><script>',
132
133
  'console.debug("hello");',
133
134
  'console.warn("this is a warning");',
134
135
  'console.error("and this is an error");',
135
136
  '</script>'));
136
- driver.manage().logs().get(logging.Type.BROWSER).then(function(entries) {
137
- assert(entries.length).equalTo(3);
138
- });
139
- driver.manage().logs().get(logging.Type.BROWSER).then(function(entries) {
140
- assert(entries.length).equalTo(0);
141
- });
137
+ yield driver.manage().logs().get(logging.Type.BROWSER)
138
+ .then(entries => assert(entries.length).equalTo(3));
139
+ return driver.manage().logs().get(logging.Type.BROWSER)
140
+ .then(entries => assert(entries.length).equalTo(0));
142
141
  });
143
142
 
144
- test.it('does not mix log types', function() {
143
+ test.it('does not mix log types', function*() {
145
144
  var prefs = new logging.Preferences();
146
145
  prefs.setLevel(logging.Type.BROWSER, logging.Level.DEBUG);
147
146
  prefs.setLevel(logging.Type.DRIVER, logging.Level.SEVERE);
148
147
 
149
- driver = env.builder()
148
+ driver = yield env.builder()
150
149
  .setLoggingPrefs(prefs)
151
150
  .build();
152
151
 
153
- driver.get(dataUrl(
152
+ yield driver.get(dataUrl(
154
153
  '<!DOCTYPE html><script>',
155
154
  'console.debug("hello");',
156
155
  'console.warn("this is a warning");',
157
156
  'console.error("and this is an error");',
158
157
  '</script>'));
159
- driver.manage().logs().get(logging.Type.DRIVER).then(function(entries) {
160
- assert(entries.length).equalTo(0);
161
- });
158
+ return driver.manage().logs().get(logging.Type.DRIVER)
159
+ .then(entries => assert(entries.length).equalTo(0));
162
160
  });
163
161
  });
164
162
 
@@ -17,11 +17,10 @@
17
17
 
18
18
  'use strict';
19
19
 
20
- var assert = require('assert'),
21
- net = require('net');
20
+ const assert = require('assert');
21
+ const net = require('net');
22
22
 
23
- var promise = require('../..').promise,
24
- portprober = require('../../net/portprober');
23
+ const portprober = require('../../net/portprober');
25
24
 
26
25
  describe('isFree', function() {
27
26
 
@@ -42,12 +41,12 @@ describe('isFree', function() {
42
41
  server.listen(0, function() {
43
42
  var port = server.address().port;
44
43
  assertPortNotfree(port).then(function() {
45
- var done = promise.defer();
46
- server.close(function() {
47
- server = null;
48
- done.fulfill(assertPortIsFree(port));
44
+ return new Promise(resolve => {
45
+ server.close(function() {
46
+ server = null;
47
+ resolve(assertPortIsFree(port));
48
+ });
49
49
  });
50
- return done.promise;
51
50
  }).then(function() { done(); }, done);
52
51
  });
53
52
  });
@@ -57,12 +56,12 @@ describe('isFree', function() {
57
56
  server.listen(0, host, function() {
58
57
  var port = server.address().port;
59
58
  assertPortNotfree(port, host).then(function() {
60
- var done = promise.defer();
61
- server.close(function() {
62
- server = null;
63
- done.fulfill(assertPortIsFree(port, host));
59
+ return new Promise(resolve => {
60
+ server.close(function() {
61
+ server = null;
62
+ resolve(assertPortIsFree(port, host));
63
+ });
64
64
  });
65
- return done.promise;
66
65
  }).then(function() { done(); }, done);
67
66
  });
68
67
  });
@@ -86,12 +85,12 @@ describe('findFreePort', function() {
86
85
  portprober.findFreePort().then(function(port) {
87
86
  server.listen(port, function() {
88
87
  assertPortNotfree(port).then(function() {
89
- var done = promise.defer();
90
- server.close(function() {
91
- server = null;
92
- done.fulfill(assertPortIsFree(port));
88
+ return new Promise(resolve => {
89
+ server.close(function() {
90
+ server = null;
91
+ resolve(assertPortIsFree(port));
92
+ });
93
93
  });
94
- return done.promise;
95
94
  }).then(function() { done(); }, done);
96
95
  });
97
96
  });
@@ -102,12 +101,12 @@ describe('findFreePort', function() {
102
101
  portprober.findFreePort(host).then(function(port) {
103
102
  server.listen(port, host, function() {
104
103
  assertPortNotfree(port, host).then(function() {
105
- var done = promise.defer();
106
- server.close(function() {
107
- server = null;
108
- done.fulfill(assertPortIsFree(port, host));
104
+ return new Promise(resolve => {
105
+ server.close(function() {
106
+ server = null;
107
+ resolve(assertPortIsFree(port, host));
108
+ });
109
109
  });
110
- return done.promise;
111
110
  }).then(function() { done(); }, done);
112
111
  });
113
112
  });
@@ -30,122 +30,136 @@ test.suite(function(env) {
30
30
  var browsers = env.browsers;
31
31
 
32
32
  var driver;
33
- test.before(function() {
34
- driver = env.builder().build();
33
+ test.before(function*() {
34
+ driver = yield env.builder().build();
35
+ });
36
+
37
+ test.beforeEach(function*() {
38
+ if (!driver) {
39
+ driver = yield env.builder().build();
40
+ }
35
41
  });
36
42
 
37
43
  test.after(function() {
38
- driver.quit();
44
+ if (driver) {
45
+ return driver.quit();
46
+ }
39
47
  });
40
48
 
41
- test.it('should wait for document to be loaded', function() {
42
- driver.get(Pages.simpleTestPage);
43
- assert(driver.getTitle()).equalTo('Hello WebDriver');
49
+ test.it('should wait for document to be loaded', function*() {
50
+ yield driver.get(Pages.simpleTestPage);
51
+ return assert(driver.getTitle()).equalTo('Hello WebDriver');
44
52
  });
45
53
 
46
54
  test.it('should follow redirects sent in the http response headers',
47
- function() {
48
- driver.get(Pages.redirectPage);
49
- assert(driver.getTitle()).equalTo('We Arrive Here');
55
+ function*() {
56
+ yield driver.get(Pages.redirectPage);
57
+ return assert(driver.getTitle()).equalTo('We Arrive Here');
50
58
  });
51
59
 
52
- test.it('should follow meta redirects', function() {
53
- driver.get(Pages.metaRedirectPage);
54
- assert(driver.getTitle()).equalTo('We Arrive Here');
60
+ test.ignore(browsers(Browser.SAFARI)).
61
+ it('should follow meta redirects', function*() {
62
+ yield driver.get(Pages.metaRedirectPage);
63
+ return assert(driver.getTitle()).equalTo('We Arrive Here');
55
64
  });
56
65
 
57
66
  // Skip Firefox; see https://bugzilla.mozilla.org/show_bug.cgi?id=1280300
58
67
  test.ignore(browsers(Browser.FIREFOX)).
59
- it('should be able to get a fragment on the current page', function() {
60
- driver.get(Pages.xhtmlTestPage);
61
- driver.get(Pages.xhtmlTestPage + '#text');
62
- driver.findElement(By.id('id1'));
68
+ it('should be able to get a fragment on the current page', function*() {
69
+ yield driver.get(Pages.xhtmlTestPage);
70
+ yield driver.get(Pages.xhtmlTestPage + '#text');
71
+ yield driver.findElement(By.id('id1'));
63
72
  });
64
73
 
65
74
  test.ignore(browsers(Browser.IPAD, Browser.IPHONE)).
66
- it('should wait for all frames to load in a frameset', function() {
67
- driver.get(Pages.framesetPage);
68
- driver.switchTo().frame(0);
75
+ it('should wait for all frames to load in a frameset', function*() {
76
+ yield driver.get(Pages.framesetPage);
77
+ yield driver.switchTo().frame(0);
69
78
 
70
- driver.findElement(By.css('span#pageNumber')).getText().then(function(txt) {
71
- assert(txt.trim()).equalTo('1');
72
- });
79
+ let txt = yield driver.findElement(By.css('span#pageNumber')).getText();
80
+ assert(txt.trim()).equalTo('1');
73
81
 
74
- driver.switchTo().defaultContent();
75
- driver.switchTo().frame(1);
76
- driver.findElement(By.css('span#pageNumber')).getText().then(function(txt) {
77
- assert(txt.trim()).equalTo('2');
78
- });
82
+ yield driver.switchTo().defaultContent();
83
+ yield driver.switchTo().frame(1);
84
+ txt = yield driver.findElement(By.css('span#pageNumber')).getText();
85
+
86
+ assert(txt.trim()).equalTo('2');
79
87
  });
80
88
 
81
89
  test.ignore(browsers(Browser.SAFARI)).
82
- it('should be able to navigate back in browser history', function() {
83
- driver.get(Pages.formPage);
90
+ it('should be able to navigate back in browser history', function*() {
91
+ yield driver.get(Pages.formPage);
84
92
 
85
- driver.findElement(By.id('imageButton')).click();
86
- driver.wait(until.titleIs('We Arrive Here'), 2500);
93
+ yield driver.findElement(By.id('imageButton')).click();
94
+ yield driver.wait(until.titleIs('We Arrive Here'), 2500);
87
95
 
88
- driver.navigate().back();
89
- driver.wait(until.titleIs('We Leave From Here'), 2500);
96
+ yield driver.navigate().back();
97
+ yield driver.wait(until.titleIs('We Leave From Here'), 2500);
90
98
  });
91
99
 
92
100
  test.ignore(browsers(Browser.SAFARI)).
93
- it('should be able to navigate back in presence of iframes', function() {
94
- driver.get(Pages.xhtmlTestPage);
101
+ it('should be able to navigate back in presence of iframes', function*() {
102
+ yield driver.get(Pages.xhtmlTestPage);
95
103
 
96
- driver.findElement(By.name('sameWindow')).click();
97
- driver.wait(until.titleIs('This page has iframes'), 2500);
104
+ yield driver.findElement(By.name('sameWindow')).click();
105
+ yield driver.wait(until.titleIs('This page has iframes'), 2500);
98
106
 
99
- driver.navigate().back();
100
- driver.wait(until.titleIs('XHTML Test Page'), 2500);
107
+ yield driver.navigate().back();
108
+ yield driver.wait(until.titleIs('XHTML Test Page'), 2500);
101
109
  });
102
110
 
103
111
  test.ignore(browsers(Browser.SAFARI)).
104
- it('should be able to navigate forwards in browser history', function() {
105
- driver.get(Pages.formPage);
112
+ it('should be able to navigate forwards in browser history', function*() {
113
+ yield driver.get(Pages.formPage);
106
114
 
107
- driver.findElement(By.id('imageButton')).click();
108
- driver.wait(until.titleIs('We Arrive Here'), 5000);
115
+ yield driver.findElement(By.id('imageButton')).click();
116
+ yield driver.wait(until.titleIs('We Arrive Here'), 5000);
109
117
 
110
- driver.navigate().back();
111
- driver.wait(until.titleIs('We Leave From Here'), 5000);
118
+ yield driver.navigate().back();
119
+ yield driver.wait(until.titleIs('We Leave From Here'), 5000);
112
120
 
113
- driver.navigate().forward();
114
- driver.wait(until.titleIs('We Arrive Here'), 5000);
121
+ yield driver.navigate().forward();
122
+ yield driver.wait(until.titleIs('We Arrive Here'), 5000);
115
123
  });
116
124
 
117
125
  // PhantomJS 2.0 does not properly reload pages on refresh.
118
126
  test.ignore(browsers(Browser.PHANTOM_JS)).
119
- it('should be able to refresh a page', function() {
120
- driver.get(Pages.xhtmlTestPage);
127
+ it('should be able to refresh a page', function*() {
128
+ yield driver.get(Pages.xhtmlTestPage);
121
129
 
122
- driver.navigate().refresh();
130
+ yield driver.navigate().refresh();
123
131
 
124
- assert(driver.getTitle()).equalTo('XHTML Test Page');
132
+ yield assert(driver.getTitle()).equalTo('XHTML Test Page');
125
133
  });
126
134
 
127
- test.it('should return title of page if set', function() {
128
- driver.get(Pages.xhtmlTestPage);
129
- assert(driver.getTitle()).equalTo('XHTML Test Page');
135
+ test.it('should return title of page if set', function*() {
136
+ yield driver.get(Pages.xhtmlTestPage);
137
+ yield assert(driver.getTitle()).equalTo('XHTML Test Page');
130
138
 
131
- driver.get(Pages.simpleTestPage);
132
- assert(driver.getTitle()).equalTo('Hello WebDriver');
139
+ yield driver.get(Pages.simpleTestPage);
140
+ yield assert(driver.getTitle()).equalTo('Hello WebDriver');
133
141
  });
134
142
 
135
- // Only implemented in Firefox.
136
- test.ignore(browsers(
137
- Browser.CHROME,
138
- Browser.IE,
139
- Browser.IPAD,
140
- Browser.IPHONE,
141
- Browser.OPERA,
142
- Browser.PHANTOM_JS,
143
- Browser.SAFARI)).
144
- it('should timeout if page load timeout is set', function() {
145
- driver.call(function() {
146
- driver.manage().timeouts().pageLoadTimeout(1);
147
- driver.get(Pages.sleepingPage + '?time=3').
148
- then(function() {
143
+ describe('timeouts', function() {
144
+ test.afterEach(function() {
145
+ let nullDriver = () => driver = null;
146
+ if (driver) {
147
+ return driver.quit().then(nullDriver, nullDriver);
148
+ }
149
+ });
150
+
151
+ // Only implemented in Firefox.
152
+ test.ignore(browsers(
153
+ Browser.CHROME,
154
+ Browser.IE,
155
+ Browser.IPAD,
156
+ Browser.IPHONE,
157
+ Browser.OPERA,
158
+ Browser.PHANTOM_JS)).
159
+ it('should timeout if page load timeout is set', function*() {
160
+ yield driver.manage().timeouts().pageLoadTimeout(1);
161
+ return driver.get(Pages.sleepingPage + '?time=3')
162
+ .then(function() {
149
163
  throw Error('Should have timed out on page load');
150
164
  }, function(e) {
151
165
  if (!(e instanceof error.ScriptTimeoutError)
@@ -153,14 +167,6 @@ test.suite(function(env) {
153
167
  throw Error('Unexpected error response: ' + e);
154
168
  }
155
169
  });
156
- }).then(resetPageLoad, function(err) {
157
- resetPageLoad().finally(function() {
158
- throw err;
159
- });
160
170
  });
161
-
162
- function resetPageLoad() {
163
- return driver.manage().timeouts().pageLoadTimeout(-1);
164
- }
165
171
  });
166
172
  });
@@ -24,49 +24,35 @@ var test = require('../../lib/test');
24
24
  test.suite(function(env) {
25
25
  var driver;
26
26
 
27
- test.before(function() {
28
- driver = env.builder().build();
27
+ test.before(function*() {
28
+ driver = yield env.builder().build();
29
29
  });
30
30
 
31
31
  test.after(function() {
32
- driver.quit();
32
+ return driver.quit();
33
33
  });
34
34
 
35
35
  var testPageUrl =
36
36
  'data:text/html,<html><h1>' + path.basename(__filename) + '</h1></html>';
37
37
 
38
38
  test.beforeEach(function() {
39
- driver.get(testPageUrl);
39
+ return driver.get(testPageUrl);
40
40
  });
41
41
 
42
42
  describe('phantomjs.Driver', function() {
43
43
  describe('#executePhantomJS()', function() {
44
44
 
45
- test.it('can execute scripts using PhantomJS API', function() {
46
- return driver.executePhantomJS('return this.url;').then(function(url) {
47
- assert.equal(testPageUrl, decodeURIComponent(url));
48
- });
45
+ test.it('can execute scripts using PhantomJS API', function*() {
46
+ let url = yield driver.executePhantomJS('return this.url;');
47
+ assert.equal(testPageUrl, decodeURIComponent(url));
49
48
  });
50
49
 
51
- test.it('can execute scripts as functions', function() {
52
- driver.executePhantomJS(function(a, b) {
50
+ test.it('can execute scripts as functions', function*() {
51
+ let result = yield driver.executePhantomJS(function(a, b) {
53
52
  return a + b;
54
- }, 1, 2).then(function(result) {
55
- assert.equal(3, result);
56
- });
57
- });
53
+ }, 1, 2);
58
54
 
59
- test.it('can manipulate the current page', function() {
60
- driver.manage().addCookie({name: 'foo', value: 'bar'});
61
- driver.manage().getCookie('foo').then(function(cookie) {
62
- assert.equal('bar', cookie.value);
63
- });
64
- driver.executePhantomJS(function() {
65
- this.clearCookies();
66
- });
67
- driver.manage().getCookie('foo').then(function(cookie) {
68
- assert.equal(null, cookie);
69
- });
55
+ assert.equal(3, result);
70
56
  });
71
57
  });
72
58
  });
@@ -96,7 +96,7 @@ test.suite(function(env) {
96
96
 
97
97
  var driver;
98
98
  test.beforeEach(function() { driver = null; });
99
- test.afterEach(function() { driver && driver.quit(); });
99
+ test.afterEach(function() { return driver && driver.quit(); });
100
100
 
101
101
  function createDriver(proxy) {
102
102
  // For Firefox we need to explicitly enable proxies for localhost by
@@ -104,7 +104,7 @@ test.suite(function(env) {
104
104
  let profile = new firefox.Profile();
105
105
  profile.setPreference('network.proxy.no_proxies_on', '');
106
106
 
107
- driver = env.builder()
107
+ return driver = env.builder()
108
108
  .setFirefoxOptions(new firefox.Options().setProfile(profile))
109
109
  .setProxy(proxy)
110
110
  .build();
@@ -116,14 +116,14 @@ test.suite(function(env) {
116
116
  // phantomjs 1.9.1 in webdriver mode does not appear to respect proxy
117
117
  // settings.
118
118
  test.ignore(env.browsers(Browser.PHANTOM_JS)).
119
- it('can configure HTTP proxy host', function() {
120
- createDriver(proxy.manual({
119
+ it('can configure HTTP proxy host', function*() {
120
+ yield createDriver(proxy.manual({
121
121
  http: proxyServer.host()
122
122
  }));
123
123
 
124
- driver.get(helloServer.url());
125
- assert(driver.getTitle()).equalTo('Proxy page');
126
- assert(driver.findElement({tagName: 'h3'}).getText()).
124
+ yield driver.get(helloServer.url());
125
+ yield assert(driver.getTitle()).equalTo('Proxy page');
126
+ yield assert(driver.findElement({tagName: 'h3'}).getText()).
127
127
  equalTo('This is the proxy landing page');
128
128
  });
129
129
 
@@ -134,20 +134,20 @@ test.suite(function(env) {
134
134
  Browser.FIREFOX,
135
135
  'legacy-' + Browser.FIREFOX,
136
136
  Browser.PHANTOM_JS)).
137
- it('can bypass proxy for specific hosts', function() {
138
- createDriver(proxy.manual({
137
+ it('can bypass proxy for specific hosts', function*() {
138
+ yield createDriver(proxy.manual({
139
139
  http: proxyServer.host(),
140
140
  bypass: helloServer.host()
141
141
  }));
142
142
 
143
- driver.get(helloServer.url());
144
- assert(driver.getTitle()).equalTo('Hello');
145
- assert(driver.findElement({tagName: 'h3'}).getText()).
143
+ yield driver.get(helloServer.url());
144
+ yield assert(driver.getTitle()).equalTo('Hello');
145
+ yield assert(driver.findElement({tagName: 'h3'}).getText()).
146
146
  equalTo('Hello, world!');
147
147
 
148
- driver.get(goodbyeServer.url());
149
- assert(driver.getTitle()).equalTo('Proxy page');
150
- assert(driver.findElement({tagName: 'h3'}).getText()).
148
+ yield driver.get(goodbyeServer.url());
149
+ yield assert(driver.getTitle()).equalTo('Proxy page');
150
+ yield assert(driver.findElement({tagName: 'h3'}).getText()).
151
151
  equalTo('This is the proxy landing page');
152
152
  });
153
153
 
@@ -159,17 +159,17 @@ test.suite(function(env) {
159
159
  test.ignore(env.browsers(
160
160
  Browser.IE, Browser.OPERA, Browser.PHANTOM_JS, Browser.SAFARI)).
161
161
  describe('pac proxy settings', function() {
162
- test.it('can configure proxy through PAC file', function() {
163
- createDriver(proxy.pac(proxyServer.url('/proxy.pac')));
162
+ test.it('can configure proxy through PAC file', function*() {
163
+ yield createDriver(proxy.pac(proxyServer.url('/proxy.pac')));
164
164
 
165
- driver.get(helloServer.url());
166
- assert(driver.getTitle()).equalTo('Proxy page');
167
- assert(driver.findElement({tagName: 'h3'}).getText()).
165
+ yield driver.get(helloServer.url());
166
+ yield assert(driver.getTitle()).equalTo('Proxy page');
167
+ yield assert(driver.findElement({tagName: 'h3'}).getText()).
168
168
  equalTo('This is the proxy landing page');
169
169
 
170
- driver.get(goodbyeServer.url());
171
- assert(driver.getTitle()).equalTo('Goodbye');
172
- assert(driver.findElement({tagName: 'h3'}).getText()).
170
+ yield driver.get(goodbyeServer.url());
171
+ yield assert(driver.getTitle()).equalTo('Goodbye');
172
+ yield assert(driver.findElement({tagName: 'h3'}).getText()).
173
173
  equalTo('Goodbye, world!');
174
174
  });
175
175
  });