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
@@ -29,126 +29,127 @@ var test = require('../lib/test'),
29
29
  test.suite(function(env) {
30
30
  var driver;
31
31
 
32
- test.before(function() {
33
- driver = env.builder().build();
32
+ test.before(function*() {
33
+ driver = yield env.builder().build();
34
34
  });
35
35
 
36
36
  test.after(function() {
37
- driver.quit();
37
+ return driver.quit();
38
38
  });
39
39
 
40
- test.ignore(env.browsers(Browser.SAFARI)). // Cookie handling is broken.
40
+ // Cookie handling is broken.
41
+ test.ignore(env.browsers(Browser.PHANTOM_JS, Browser.SAFARI)).
41
42
  describe('Cookie Management;', function() {
42
43
 
43
- test.beforeEach(function() {
44
- driver.get(fileserver.Pages.ajaxyPage);
45
- driver.manage().deleteAllCookies();
46
- assertHasCookies();
44
+ test.beforeEach(function*() {
45
+ yield driver.get(fileserver.Pages.ajaxyPage);
46
+ yield driver.manage().deleteAllCookies();
47
+ return assertHasCookies();
47
48
  });
48
49
 
49
- test.it('can add new cookies', function() {
50
+ test.it('can add new cookies', function*() {
50
51
  var cookie = createCookieSpec();
51
52
 
52
- driver.manage().addCookie(cookie);
53
- driver.manage().getCookie(cookie.name).then(function(actual) {
53
+ yield driver.manage().addCookie(cookie);
54
+ yield driver.manage().getCookie(cookie.name).then(function(actual) {
54
55
  assert.equal(actual.value, cookie.value);
55
56
  });
56
57
  });
57
58
 
58
- test.it('can get all cookies', function() {
59
+ test.it('can get all cookies', function*() {
59
60
  var cookie1 = createCookieSpec();
60
61
  var cookie2 = createCookieSpec();
61
62
 
62
- driver.manage().addCookie(cookie1);
63
- driver.manage().addCookie(cookie2);
63
+ yield driver.manage().addCookie(cookie1);
64
+ yield driver.manage().addCookie(cookie2);
64
65
 
65
- assertHasCookies(cookie1, cookie2);
66
+ return assertHasCookies(cookie1, cookie2);
66
67
  });
67
68
 
68
69
  test.ignore(env.browsers(Browser.IE)).
69
- it('only returns cookies visible to the current page', function() {
70
+ it('only returns cookies visible to the current page', function*() {
70
71
  var cookie1 = createCookieSpec();
71
72
 
72
- driver.manage().addCookie(cookie1);
73
+ yield driver.manage().addCookie(cookie1);
73
74
 
74
75
  var pageUrl = fileserver.whereIs('page/1');
75
76
  var cookie2 = createCookieSpec({
76
77
  path: url.parse(pageUrl).pathname
77
78
  });
78
- driver.get(pageUrl);
79
- driver.manage().addCookie(cookie2);
80
- assertHasCookies(cookie1, cookie2);
79
+ yield driver.get(pageUrl);
80
+ yield driver.manage().addCookie(cookie2);
81
+ yield assertHasCookies(cookie1, cookie2);
81
82
 
82
- driver.get(fileserver.Pages.ajaxyPage);
83
- assertHasCookies(cookie1);
83
+ yield driver.get(fileserver.Pages.ajaxyPage);
84
+ yield assertHasCookies(cookie1);
84
85
 
85
- driver.get(pageUrl);
86
- assertHasCookies(cookie1, cookie2);
86
+ yield driver.get(pageUrl);
87
+ yield assertHasCookies(cookie1, cookie2);
87
88
  });
88
89
 
89
- test.it('can delete all cookies', function() {
90
+ test.it('can delete all cookies', function*() {
90
91
  var cookie1 = createCookieSpec();
91
92
  var cookie2 = createCookieSpec();
92
93
 
93
- driver.executeScript(
94
+ yield driver.executeScript(
94
95
  'document.cookie = arguments[0] + "=" + arguments[1];' +
95
96
  'document.cookie = arguments[2] + "=" + arguments[3];',
96
97
  cookie1.name, cookie1.value, cookie2.name, cookie2.value);
97
- assertHasCookies(cookie1, cookie2);
98
+ yield assertHasCookies(cookie1, cookie2);
98
99
 
99
- driver.manage().deleteAllCookies();
100
- assertHasCookies();
100
+ yield driver.manage().deleteAllCookies();
101
+ yield assertHasCookies();
101
102
  });
102
103
 
103
- test.it('can delete cookies by name', function() {
104
+ test.it('can delete cookies by name', function*() {
104
105
  var cookie1 = createCookieSpec();
105
106
  var cookie2 = createCookieSpec();
106
107
 
107
- driver.executeScript(
108
+ yield driver.executeScript(
108
109
  'document.cookie = arguments[0] + "=" + arguments[1];' +
109
110
  'document.cookie = arguments[2] + "=" + arguments[3];',
110
111
  cookie1.name, cookie1.value, cookie2.name, cookie2.value);
111
- assertHasCookies(cookie1, cookie2);
112
+ yield assertHasCookies(cookie1, cookie2);
112
113
 
113
- driver.manage().deleteCookie(cookie1.name);
114
- assertHasCookies(cookie2);
114
+ yield driver.manage().deleteCookie(cookie1.name);
115
+ yield assertHasCookies(cookie2);
115
116
  });
116
117
 
117
- test.it('should only delete cookie with exact name', function() {
118
+ test.it('should only delete cookie with exact name', function*() {
118
119
  var cookie1 = createCookieSpec();
119
120
  var cookie2 = createCookieSpec();
120
121
  var cookie3 = {name: cookie1.name + 'xx', value: cookie1.value};
121
122
 
122
- driver.executeScript(
123
+ yield driver.executeScript(
123
124
  'document.cookie = arguments[0] + "=" + arguments[1];' +
124
125
  'document.cookie = arguments[2] + "=" + arguments[3];' +
125
126
  'document.cookie = arguments[4] + "=" + arguments[5];',
126
127
  cookie1.name, cookie1.value, cookie2.name, cookie2.value,
127
128
  cookie3.name, cookie3.value);
128
- assertHasCookies(cookie1, cookie2, cookie3);
129
+ yield assertHasCookies(cookie1, cookie2, cookie3);
129
130
 
130
- driver.manage().deleteCookie(cookie1.name);
131
- assertHasCookies(cookie2, cookie3);
131
+ yield driver.manage().deleteCookie(cookie1.name);
132
+ yield assertHasCookies(cookie2, cookie3);
132
133
  });
133
134
 
134
- test.it('can delete cookies set higher in the path', function() {
135
+ test.it('can delete cookies set higher in the path', function*() {
135
136
  var cookie = createCookieSpec();
136
137
  var childUrl = fileserver.whereIs('child/childPage.html');
137
138
  var grandchildUrl = fileserver.whereIs(
138
139
  'child/grandchild/grandchildPage.html');
139
140
 
140
- driver.get(childUrl);
141
- driver.manage().addCookie(cookie);
142
- assertHasCookies(cookie);
141
+ yield driver.get(childUrl);
142
+ yield driver.manage().addCookie(cookie);
143
+ yield assertHasCookies(cookie);
143
144
 
144
- driver.get(grandchildUrl);
145
- assertHasCookies(cookie);
145
+ yield driver.get(grandchildUrl);
146
+ yield assertHasCookies(cookie);
146
147
 
147
- driver.manage().deleteCookie(cookie.name);
148
- assertHasCookies();
148
+ yield driver.manage().deleteCookie(cookie.name);
149
+ yield assertHasCookies();
149
150
 
150
- driver.get(childUrl);
151
- assertHasCookies();
151
+ yield driver.get(childUrl);
152
+ yield assertHasCookies();
152
153
  });
153
154
 
154
155
  test.ignore(env.browsers(
@@ -156,20 +157,20 @@ test.suite(function(env) {
156
157
  Browser.FIREFOX,
157
158
  'legacy-' + Browser.FIREFOX,
158
159
  Browser.IE)).
159
- it('should retain cookie expiry', function() {
160
+ it('should retain cookie expiry', function*() {
160
161
  let expirationDelay = 5 * 1000;
161
162
  let expiry = new Date(Date.now() + expirationDelay);
162
163
  let cookie = createCookieSpec({expiry});
163
164
 
164
- driver.manage().addCookie(cookie);
165
- driver.manage().getCookie(cookie.name).then(function(actual) {
165
+ yield driver.manage().addCookie(cookie);
166
+ yield driver.manage().getCookie(cookie.name).then(function(actual) {
166
167
  assert.equal(actual.value, cookie.value);
167
168
  // expiry times are exchanged in seconds since January 1, 1970 UTC.
168
169
  assert.equal(actual.expiry, Math.floor(expiry.getTime() / 1000));
169
170
  });
170
171
 
171
- driver.sleep(expirationDelay);
172
- assertHasCookies();
172
+ yield driver.sleep(expirationDelay);
173
+ yield assertHasCookies();
173
174
  });
174
175
  });
175
176
 
@@ -192,9 +193,8 @@ test.suite(function(env) {
192
193
  return map;
193
194
  }
194
195
 
195
- function assertHasCookies(var_args) {
196
- var expected = Array.prototype.slice.call(arguments, 0);
197
- driver.manage().getCookies().then(function(cookies) {
196
+ function assertHasCookies(...expected) {
197
+ return driver.manage().getCookies().then(function(cookies) {
198
198
  assert.equal(cookies.length, expected.length,
199
199
  'Wrong # of cookies.' +
200
200
  '\n Expected: ' + JSON.stringify(expected) +