UrgentcareCLI 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (308) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -0
  3. data/Gemfile.lock +60 -25
  4. data/Notes +1 -1
  5. data/README.md +5 -5
  6. data/Rakefile +2 -0
  7. data/UrgentCare.gemspec +3 -3
  8. data/background.jpg +0 -0
  9. data/lib/UrgentCare.rb +3 -0
  10. data/lib/UrgentCare/CLI.rb +6 -2
  11. data/lib/UrgentCare/version.rb +1 -1
  12. data/lib/Urgentcare/Scraper.rb +65 -23
  13. data/node_modules/.bin/rimraf +1 -0
  14. data/node_modules/.package-lock.json +250 -0
  15. data/node_modules/balanced-match/.github/FUNDING.yml +2 -0
  16. data/node_modules/balanced-match/LICENSE.md +21 -0
  17. data/node_modules/balanced-match/README.md +97 -0
  18. data/node_modules/balanced-match/index.js +62 -0
  19. data/node_modules/balanced-match/package.json +48 -0
  20. data/node_modules/brace-expansion/LICENSE +21 -0
  21. data/node_modules/brace-expansion/README.md +129 -0
  22. data/node_modules/brace-expansion/index.js +201 -0
  23. data/node_modules/brace-expansion/package.json +47 -0
  24. data/node_modules/concat-map/.travis.yml +4 -0
  25. data/node_modules/concat-map/LICENSE +18 -0
  26. data/node_modules/concat-map/README.markdown +62 -0
  27. data/node_modules/concat-map/example/map.js +6 -0
  28. data/node_modules/concat-map/index.js +13 -0
  29. data/node_modules/concat-map/package.json +43 -0
  30. data/node_modules/concat-map/test/map.js +39 -0
  31. data/node_modules/core-util-is/LICENSE +19 -0
  32. data/node_modules/core-util-is/README.md +3 -0
  33. data/node_modules/core-util-is/float.patch +604 -0
  34. data/node_modules/core-util-is/lib/util.js +107 -0
  35. data/node_modules/core-util-is/package.json +32 -0
  36. data/node_modules/core-util-is/test.js +68 -0
  37. data/node_modules/fs.realpath/LICENSE +43 -0
  38. data/node_modules/fs.realpath/README.md +33 -0
  39. data/node_modules/fs.realpath/index.js +66 -0
  40. data/node_modules/fs.realpath/old.js +303 -0
  41. data/node_modules/fs.realpath/package.json +26 -0
  42. data/node_modules/glob/LICENSE +21 -0
  43. data/node_modules/glob/README.md +375 -0
  44. data/node_modules/glob/changelog.md +67 -0
  45. data/node_modules/glob/common.js +234 -0
  46. data/node_modules/glob/glob.js +788 -0
  47. data/node_modules/glob/package.json +51 -0
  48. data/node_modules/glob/sync.js +484 -0
  49. data/node_modules/immediate/LICENSE.txt +20 -0
  50. data/node_modules/immediate/README.md +93 -0
  51. data/node_modules/immediate/dist/immediate.js +75 -0
  52. data/node_modules/immediate/dist/immediate.min.js +1 -0
  53. data/node_modules/immediate/lib/browser.js +69 -0
  54. data/node_modules/immediate/lib/index.js +73 -0
  55. data/node_modules/immediate/package.json +42 -0
  56. data/node_modules/inflight/LICENSE +15 -0
  57. data/node_modules/inflight/README.md +37 -0
  58. data/node_modules/inflight/inflight.js +54 -0
  59. data/node_modules/inflight/package.json +29 -0
  60. data/node_modules/inherits/LICENSE +16 -0
  61. data/node_modules/inherits/README.md +42 -0
  62. data/node_modules/inherits/inherits.js +9 -0
  63. data/node_modules/inherits/inherits_browser.js +27 -0
  64. data/node_modules/inherits/package.json +29 -0
  65. data/node_modules/isarray/.npmignore +1 -0
  66. data/node_modules/isarray/.travis.yml +4 -0
  67. data/node_modules/isarray/Makefile +6 -0
  68. data/node_modules/isarray/README.md +60 -0
  69. data/node_modules/isarray/component.json +19 -0
  70. data/node_modules/isarray/index.js +5 -0
  71. data/node_modules/isarray/package.json +45 -0
  72. data/node_modules/isarray/test.js +20 -0
  73. data/node_modules/jszip/.codeclimate.yml +16 -0
  74. data/node_modules/jszip/.editorconfig +8 -0
  75. data/node_modules/jszip/.jshintignore +1 -0
  76. data/node_modules/jszip/.jshintrc +21 -0
  77. data/node_modules/jszip/.travis.yml +17 -0
  78. data/node_modules/jszip/CHANGES.md +163 -0
  79. data/node_modules/jszip/LICENSE.markdown +651 -0
  80. data/node_modules/jszip/README.markdown +35 -0
  81. data/node_modules/jszip/dist/jszip.js +30 -0
  82. data/node_modules/jszip/dist/jszip.min.js +13 -0
  83. data/node_modules/jszip/index.d.ts +270 -0
  84. data/node_modules/jszip/lib/base64.js +106 -0
  85. data/node_modules/jszip/lib/compressedObject.js +74 -0
  86. data/node_modules/jszip/lib/compressions.js +14 -0
  87. data/node_modules/jszip/lib/crc32.js +77 -0
  88. data/node_modules/jszip/lib/defaults.js +11 -0
  89. data/node_modules/jszip/lib/external.js +19 -0
  90. data/node_modules/jszip/lib/flate.js +85 -0
  91. data/node_modules/jszip/lib/generate/ZipFileWorker.js +540 -0
  92. data/node_modules/jszip/lib/generate/index.js +57 -0
  93. data/node_modules/jszip/lib/index.js +52 -0
  94. data/node_modules/jszip/lib/license_header.js +11 -0
  95. data/node_modules/jszip/lib/load.js +81 -0
  96. data/node_modules/jszip/lib/nodejs/NodejsStreamInputAdapter.js +74 -0
  97. data/node_modules/jszip/lib/nodejs/NodejsStreamOutputAdapter.js +42 -0
  98. data/node_modules/jszip/lib/nodejsUtils.js +57 -0
  99. data/node_modules/jszip/lib/object.js +389 -0
  100. data/node_modules/jszip/lib/readable-stream-browser.js +9 -0
  101. data/node_modules/jszip/lib/reader/ArrayReader.js +57 -0
  102. data/node_modules/jszip/lib/reader/DataReader.js +116 -0
  103. data/node_modules/jszip/lib/reader/NodeBufferReader.js +19 -0
  104. data/node_modules/jszip/lib/reader/StringReader.js +38 -0
  105. data/node_modules/jszip/lib/reader/Uint8ArrayReader.js +22 -0
  106. data/node_modules/jszip/lib/reader/readerFor.js +28 -0
  107. data/node_modules/jszip/lib/signature.js +7 -0
  108. data/node_modules/jszip/lib/stream/ConvertWorker.js +26 -0
  109. data/node_modules/jszip/lib/stream/Crc32Probe.js +24 -0
  110. data/node_modules/jszip/lib/stream/DataLengthProbe.js +29 -0
  111. data/node_modules/jszip/lib/stream/DataWorker.js +116 -0
  112. data/node_modules/jszip/lib/stream/GenericWorker.js +263 -0
  113. data/node_modules/jszip/lib/stream/StreamHelper.js +212 -0
  114. data/node_modules/jszip/lib/support.js +38 -0
  115. data/node_modules/jszip/lib/utf8.js +275 -0
  116. data/node_modules/jszip/lib/utils.js +476 -0
  117. data/node_modules/jszip/lib/zipEntries.js +262 -0
  118. data/node_modules/jszip/lib/zipEntry.js +294 -0
  119. data/node_modules/jszip/lib/zipObject.js +133 -0
  120. data/node_modules/jszip/package.json +63 -0
  121. data/node_modules/jszip/vendor/FileSaver.js +247 -0
  122. data/node_modules/lie/README.md +62 -0
  123. data/node_modules/lie/dist/lie.js +350 -0
  124. data/node_modules/lie/dist/lie.min.js +1 -0
  125. data/node_modules/lie/dist/lie.polyfill.js +358 -0
  126. data/node_modules/lie/dist/lie.polyfill.min.js +1 -0
  127. data/node_modules/lie/lib/browser.js +273 -0
  128. data/node_modules/lie/lib/index.js +298 -0
  129. data/node_modules/lie/license.md +7 -0
  130. data/node_modules/lie/lie.d.ts +244 -0
  131. data/node_modules/lie/package.json +69 -0
  132. data/node_modules/lie/polyfill.js +4 -0
  133. data/node_modules/minimatch/LICENSE +15 -0
  134. data/node_modules/minimatch/README.md +209 -0
  135. data/node_modules/minimatch/minimatch.js +923 -0
  136. data/node_modules/minimatch/package.json +30 -0
  137. data/node_modules/once/LICENSE +15 -0
  138. data/node_modules/once/README.md +79 -0
  139. data/node_modules/once/once.js +42 -0
  140. data/node_modules/once/package.json +33 -0
  141. data/node_modules/pako/CHANGELOG.md +164 -0
  142. data/node_modules/pako/LICENSE +21 -0
  143. data/node_modules/pako/README.md +191 -0
  144. data/node_modules/pako/dist/pako.js +6818 -0
  145. data/node_modules/pako/dist/pako.min.js +1 -0
  146. data/node_modules/pako/dist/pako_deflate.js +3997 -0
  147. data/node_modules/pako/dist/pako_deflate.min.js +1 -0
  148. data/node_modules/pako/dist/pako_inflate.js +3300 -0
  149. data/node_modules/pako/dist/pako_inflate.min.js +1 -0
  150. data/node_modules/pako/index.js +14 -0
  151. data/node_modules/pako/lib/deflate.js +400 -0
  152. data/node_modules/pako/lib/inflate.js +423 -0
  153. data/node_modules/pako/lib/utils/common.js +105 -0
  154. data/node_modules/pako/lib/utils/strings.js +187 -0
  155. data/node_modules/pako/lib/zlib/README +59 -0
  156. data/node_modules/pako/lib/zlib/adler32.js +51 -0
  157. data/node_modules/pako/lib/zlib/constants.js +68 -0
  158. data/node_modules/pako/lib/zlib/crc32.js +59 -0
  159. data/node_modules/pako/lib/zlib/deflate.js +1874 -0
  160. data/node_modules/pako/lib/zlib/gzheader.js +58 -0
  161. data/node_modules/pako/lib/zlib/inffast.js +345 -0
  162. data/node_modules/pako/lib/zlib/inflate.js +1556 -0
  163. data/node_modules/pako/lib/zlib/inftrees.js +343 -0
  164. data/node_modules/pako/lib/zlib/messages.js +32 -0
  165. data/node_modules/pako/lib/zlib/trees.js +1222 -0
  166. data/node_modules/pako/lib/zlib/zstream.js +47 -0
  167. data/node_modules/pako/package.json +44 -0
  168. data/node_modules/path-is-absolute/index.js +20 -0
  169. data/node_modules/path-is-absolute/license +21 -0
  170. data/node_modules/path-is-absolute/package.json +43 -0
  171. data/node_modules/path-is-absolute/readme.md +59 -0
  172. data/node_modules/process-nextick-args/index.js +45 -0
  173. data/node_modules/process-nextick-args/license.md +19 -0
  174. data/node_modules/process-nextick-args/package.json +25 -0
  175. data/node_modules/process-nextick-args/readme.md +18 -0
  176. data/node_modules/readable-stream/.travis.yml +34 -0
  177. data/node_modules/readable-stream/CONTRIBUTING.md +38 -0
  178. data/node_modules/readable-stream/GOVERNANCE.md +136 -0
  179. data/node_modules/readable-stream/LICENSE +47 -0
  180. data/node_modules/readable-stream/README.md +58 -0
  181. data/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +60 -0
  182. data/node_modules/readable-stream/duplex-browser.js +1 -0
  183. data/node_modules/readable-stream/duplex.js +1 -0
  184. data/node_modules/readable-stream/lib/_stream_duplex.js +131 -0
  185. data/node_modules/readable-stream/lib/_stream_passthrough.js +47 -0
  186. data/node_modules/readable-stream/lib/_stream_readable.js +1019 -0
  187. data/node_modules/readable-stream/lib/_stream_transform.js +214 -0
  188. data/node_modules/readable-stream/lib/_stream_writable.js +687 -0
  189. data/node_modules/readable-stream/lib/internal/streams/BufferList.js +79 -0
  190. data/node_modules/readable-stream/lib/internal/streams/destroy.js +74 -0
  191. data/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
  192. data/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
  193. data/node_modules/readable-stream/package.json +52 -0
  194. data/node_modules/readable-stream/passthrough.js +1 -0
  195. data/node_modules/readable-stream/readable-browser.js +7 -0
  196. data/node_modules/readable-stream/readable.js +19 -0
  197. data/node_modules/readable-stream/transform.js +1 -0
  198. data/node_modules/readable-stream/writable-browser.js +1 -0
  199. data/node_modules/readable-stream/writable.js +8 -0
  200. data/node_modules/rimraf/LICENSE +15 -0
  201. data/node_modules/rimraf/README.md +101 -0
  202. data/node_modules/rimraf/bin.js +50 -0
  203. data/node_modules/rimraf/package.json +29 -0
  204. data/node_modules/rimraf/rimraf.js +372 -0
  205. data/node_modules/safe-buffer/LICENSE +21 -0
  206. data/node_modules/safe-buffer/README.md +584 -0
  207. data/node_modules/safe-buffer/index.d.ts +187 -0
  208. data/node_modules/safe-buffer/index.js +62 -0
  209. data/node_modules/safe-buffer/package.json +37 -0
  210. data/node_modules/selenium-webdriver/CHANGES.md +1114 -0
  211. data/node_modules/selenium-webdriver/LICENSE +202 -0
  212. data/node_modules/selenium-webdriver/NOTICE +2 -0
  213. data/node_modules/selenium-webdriver/README.md +229 -0
  214. data/node_modules/selenium-webdriver/chrome.js +295 -0
  215. data/node_modules/selenium-webdriver/chromium.js +829 -0
  216. data/node_modules/selenium-webdriver/devtools/CDPConnection.js +35 -0
  217. data/node_modules/selenium-webdriver/edge.js +224 -0
  218. data/node_modules/selenium-webdriver/example/chrome_android.js +45 -0
  219. data/node_modules/selenium-webdriver/example/chrome_mobile_emulation.js +46 -0
  220. data/node_modules/selenium-webdriver/example/firefox_channels.js +84 -0
  221. data/node_modules/selenium-webdriver/example/google_search.js +50 -0
  222. data/node_modules/selenium-webdriver/example/google_search_test.js +70 -0
  223. data/node_modules/selenium-webdriver/example/headless.js +63 -0
  224. data/node_modules/selenium-webdriver/example/logging.js +64 -0
  225. data/node_modules/selenium-webdriver/firefox.js +789 -0
  226. data/node_modules/selenium-webdriver/http/index.js +324 -0
  227. data/node_modules/selenium-webdriver/http/util.js +172 -0
  228. data/node_modules/selenium-webdriver/ie.js +503 -0
  229. data/node_modules/selenium-webdriver/index.js +825 -0
  230. data/node_modules/selenium-webdriver/io/exec.js +162 -0
  231. data/node_modules/selenium-webdriver/io/index.js +348 -0
  232. data/node_modules/selenium-webdriver/io/zip.js +223 -0
  233. data/node_modules/selenium-webdriver/lib/atoms/find-elements.js +123 -0
  234. data/node_modules/selenium-webdriver/lib/atoms/get-attribute.js +101 -0
  235. data/node_modules/selenium-webdriver/lib/atoms/is-displayed.js +101 -0
  236. data/node_modules/selenium-webdriver/lib/atoms/mutation-listener.js +55 -0
  237. data/node_modules/selenium-webdriver/lib/by.js +415 -0
  238. data/node_modules/selenium-webdriver/lib/capabilities.js +553 -0
  239. data/node_modules/selenium-webdriver/lib/command.js +206 -0
  240. data/node_modules/selenium-webdriver/lib/error.js +605 -0
  241. data/node_modules/selenium-webdriver/lib/http.js +704 -0
  242. data/node_modules/selenium-webdriver/lib/input.js +946 -0
  243. data/node_modules/selenium-webdriver/lib/logging.js +661 -0
  244. data/node_modules/selenium-webdriver/lib/promise.js +285 -0
  245. data/node_modules/selenium-webdriver/lib/proxy.js +212 -0
  246. data/node_modules/selenium-webdriver/lib/session.js +77 -0
  247. data/node_modules/selenium-webdriver/lib/symbols.js +37 -0
  248. data/node_modules/selenium-webdriver/lib/until.js +429 -0
  249. data/node_modules/selenium-webdriver/lib/webdriver.js +2919 -0
  250. data/node_modules/selenium-webdriver/net/index.js +107 -0
  251. data/node_modules/selenium-webdriver/net/portprober.js +75 -0
  252. data/node_modules/selenium-webdriver/opera.js +406 -0
  253. data/node_modules/selenium-webdriver/package.json +54 -0
  254. data/node_modules/selenium-webdriver/proxy.js +32 -0
  255. data/node_modules/selenium-webdriver/remote/index.js +624 -0
  256. data/node_modules/selenium-webdriver/safari.js +168 -0
  257. data/node_modules/selenium-webdriver/testing/index.js +504 -0
  258. data/node_modules/set-immediate-shim/index.js +7 -0
  259. data/node_modules/set-immediate-shim/package.json +34 -0
  260. data/node_modules/set-immediate-shim/readme.md +31 -0
  261. data/node_modules/string_decoder/.travis.yml +50 -0
  262. data/node_modules/string_decoder/LICENSE +48 -0
  263. data/node_modules/string_decoder/README.md +47 -0
  264. data/node_modules/string_decoder/lib/string_decoder.js +296 -0
  265. data/node_modules/string_decoder/package.json +31 -0
  266. data/node_modules/tmp/CHANGELOG.md +288 -0
  267. data/node_modules/tmp/LICENSE +21 -0
  268. data/node_modules/tmp/README.md +365 -0
  269. data/node_modules/tmp/lib/tmp.js +780 -0
  270. data/node_modules/tmp/node_modules/.bin/rimraf +1 -0
  271. data/node_modules/tmp/node_modules/rimraf/CHANGELOG.md +65 -0
  272. data/node_modules/tmp/node_modules/rimraf/LICENSE +15 -0
  273. data/node_modules/tmp/node_modules/rimraf/README.md +101 -0
  274. data/node_modules/tmp/node_modules/rimraf/bin.js +68 -0
  275. data/node_modules/tmp/node_modules/rimraf/package.json +32 -0
  276. data/node_modules/tmp/node_modules/rimraf/rimraf.js +360 -0
  277. data/node_modules/tmp/package.json +58 -0
  278. data/node_modules/util-deprecate/History.md +16 -0
  279. data/node_modules/util-deprecate/LICENSE +24 -0
  280. data/node_modules/util-deprecate/README.md +53 -0
  281. data/node_modules/util-deprecate/browser.js +67 -0
  282. data/node_modules/util-deprecate/node.js +6 -0
  283. data/node_modules/util-deprecate/package.json +27 -0
  284. data/node_modules/wrappy/LICENSE +15 -0
  285. data/node_modules/wrappy/README.md +36 -0
  286. data/node_modules/wrappy/package.json +29 -0
  287. data/node_modules/wrappy/wrappy.js +33 -0
  288. data/node_modules/ws/LICENSE +21 -0
  289. data/node_modules/ws/README.md +496 -0
  290. data/node_modules/ws/browser.js +8 -0
  291. data/node_modules/ws/index.js +10 -0
  292. data/node_modules/ws/lib/buffer-util.js +129 -0
  293. data/node_modules/ws/lib/constants.js +10 -0
  294. data/node_modules/ws/lib/event-target.js +184 -0
  295. data/node_modules/ws/lib/extension.js +223 -0
  296. data/node_modules/ws/lib/limiter.js +55 -0
  297. data/node_modules/ws/lib/permessage-deflate.js +517 -0
  298. data/node_modules/ws/lib/receiver.js +507 -0
  299. data/node_modules/ws/lib/sender.js +405 -0
  300. data/node_modules/ws/lib/stream.js +165 -0
  301. data/node_modules/ws/lib/validation.js +104 -0
  302. data/node_modules/ws/lib/websocket-server.js +418 -0
  303. data/node_modules/ws/lib/websocket.js +942 -0
  304. data/node_modules/ws/package.json +56 -0
  305. data/package-lock.json +458 -0
  306. data/package.json +5 -0
  307. data/selenium.log +1 -0
  308. metadata +314 -19
@@ -0,0 +1,187 @@
1
+ declare module "safe-buffer" {
2
+ export class Buffer {
3
+ length: number
4
+ write(string: string, offset?: number, length?: number, encoding?: string): number;
5
+ toString(encoding?: string, start?: number, end?: number): string;
6
+ toJSON(): { type: 'Buffer', data: any[] };
7
+ equals(otherBuffer: Buffer): boolean;
8
+ compare(otherBuffer: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number;
9
+ copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number;
10
+ slice(start?: number, end?: number): Buffer;
11
+ writeUIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;
12
+ writeUIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;
13
+ writeIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;
14
+ writeIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;
15
+ readUIntLE(offset: number, byteLength: number, noAssert?: boolean): number;
16
+ readUIntBE(offset: number, byteLength: number, noAssert?: boolean): number;
17
+ readIntLE(offset: number, byteLength: number, noAssert?: boolean): number;
18
+ readIntBE(offset: number, byteLength: number, noAssert?: boolean): number;
19
+ readUInt8(offset: number, noAssert?: boolean): number;
20
+ readUInt16LE(offset: number, noAssert?: boolean): number;
21
+ readUInt16BE(offset: number, noAssert?: boolean): number;
22
+ readUInt32LE(offset: number, noAssert?: boolean): number;
23
+ readUInt32BE(offset: number, noAssert?: boolean): number;
24
+ readInt8(offset: number, noAssert?: boolean): number;
25
+ readInt16LE(offset: number, noAssert?: boolean): number;
26
+ readInt16BE(offset: number, noAssert?: boolean): number;
27
+ readInt32LE(offset: number, noAssert?: boolean): number;
28
+ readInt32BE(offset: number, noAssert?: boolean): number;
29
+ readFloatLE(offset: number, noAssert?: boolean): number;
30
+ readFloatBE(offset: number, noAssert?: boolean): number;
31
+ readDoubleLE(offset: number, noAssert?: boolean): number;
32
+ readDoubleBE(offset: number, noAssert?: boolean): number;
33
+ swap16(): Buffer;
34
+ swap32(): Buffer;
35
+ swap64(): Buffer;
36
+ writeUInt8(value: number, offset: number, noAssert?: boolean): number;
37
+ writeUInt16LE(value: number, offset: number, noAssert?: boolean): number;
38
+ writeUInt16BE(value: number, offset: number, noAssert?: boolean): number;
39
+ writeUInt32LE(value: number, offset: number, noAssert?: boolean): number;
40
+ writeUInt32BE(value: number, offset: number, noAssert?: boolean): number;
41
+ writeInt8(value: number, offset: number, noAssert?: boolean): number;
42
+ writeInt16LE(value: number, offset: number, noAssert?: boolean): number;
43
+ writeInt16BE(value: number, offset: number, noAssert?: boolean): number;
44
+ writeInt32LE(value: number, offset: number, noAssert?: boolean): number;
45
+ writeInt32BE(value: number, offset: number, noAssert?: boolean): number;
46
+ writeFloatLE(value: number, offset: number, noAssert?: boolean): number;
47
+ writeFloatBE(value: number, offset: number, noAssert?: boolean): number;
48
+ writeDoubleLE(value: number, offset: number, noAssert?: boolean): number;
49
+ writeDoubleBE(value: number, offset: number, noAssert?: boolean): number;
50
+ fill(value: any, offset?: number, end?: number): this;
51
+ indexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number;
52
+ lastIndexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number;
53
+ includes(value: string | number | Buffer, byteOffset?: number, encoding?: string): boolean;
54
+
55
+ /**
56
+ * Allocates a new buffer containing the given {str}.
57
+ *
58
+ * @param str String to store in buffer.
59
+ * @param encoding encoding to use, optional. Default is 'utf8'
60
+ */
61
+ constructor (str: string, encoding?: string);
62
+ /**
63
+ * Allocates a new buffer of {size} octets.
64
+ *
65
+ * @param size count of octets to allocate.
66
+ */
67
+ constructor (size: number);
68
+ /**
69
+ * Allocates a new buffer containing the given {array} of octets.
70
+ *
71
+ * @param array The octets to store.
72
+ */
73
+ constructor (array: Uint8Array);
74
+ /**
75
+ * Produces a Buffer backed by the same allocated memory as
76
+ * the given {ArrayBuffer}.
77
+ *
78
+ *
79
+ * @param arrayBuffer The ArrayBuffer with which to share memory.
80
+ */
81
+ constructor (arrayBuffer: ArrayBuffer);
82
+ /**
83
+ * Allocates a new buffer containing the given {array} of octets.
84
+ *
85
+ * @param array The octets to store.
86
+ */
87
+ constructor (array: any[]);
88
+ /**
89
+ * Copies the passed {buffer} data onto a new {Buffer} instance.
90
+ *
91
+ * @param buffer The buffer to copy.
92
+ */
93
+ constructor (buffer: Buffer);
94
+ prototype: Buffer;
95
+ /**
96
+ * Allocates a new Buffer using an {array} of octets.
97
+ *
98
+ * @param array
99
+ */
100
+ static from(array: any[]): Buffer;
101
+ /**
102
+ * When passed a reference to the .buffer property of a TypedArray instance,
103
+ * the newly created Buffer will share the same allocated memory as the TypedArray.
104
+ * The optional {byteOffset} and {length} arguments specify a memory range
105
+ * within the {arrayBuffer} that will be shared by the Buffer.
106
+ *
107
+ * @param arrayBuffer The .buffer property of a TypedArray or a new ArrayBuffer()
108
+ * @param byteOffset
109
+ * @param length
110
+ */
111
+ static from(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer;
112
+ /**
113
+ * Copies the passed {buffer} data onto a new Buffer instance.
114
+ *
115
+ * @param buffer
116
+ */
117
+ static from(buffer: Buffer): Buffer;
118
+ /**
119
+ * Creates a new Buffer containing the given JavaScript string {str}.
120
+ * If provided, the {encoding} parameter identifies the character encoding.
121
+ * If not provided, {encoding} defaults to 'utf8'.
122
+ *
123
+ * @param str
124
+ */
125
+ static from(str: string, encoding?: string): Buffer;
126
+ /**
127
+ * Returns true if {obj} is a Buffer
128
+ *
129
+ * @param obj object to test.
130
+ */
131
+ static isBuffer(obj: any): obj is Buffer;
132
+ /**
133
+ * Returns true if {encoding} is a valid encoding argument.
134
+ * Valid string encodings in Node 0.12: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'
135
+ *
136
+ * @param encoding string to test.
137
+ */
138
+ static isEncoding(encoding: string): boolean;
139
+ /**
140
+ * Gives the actual byte length of a string. encoding defaults to 'utf8'.
141
+ * This is not the same as String.prototype.length since that returns the number of characters in a string.
142
+ *
143
+ * @param string string to test.
144
+ * @param encoding encoding used to evaluate (defaults to 'utf8')
145
+ */
146
+ static byteLength(string: string, encoding?: string): number;
147
+ /**
148
+ * Returns a buffer which is the result of concatenating all the buffers in the list together.
149
+ *
150
+ * If the list has no items, or if the totalLength is 0, then it returns a zero-length buffer.
151
+ * If the list has exactly one item, then the first item of the list is returned.
152
+ * If the list has more than one item, then a new Buffer is created.
153
+ *
154
+ * @param list An array of Buffer objects to concatenate
155
+ * @param totalLength Total length of the buffers when concatenated.
156
+ * If totalLength is not provided, it is read from the buffers in the list. However, this adds an additional loop to the function, so it is faster to provide the length explicitly.
157
+ */
158
+ static concat(list: Buffer[], totalLength?: number): Buffer;
159
+ /**
160
+ * The same as buf1.compare(buf2).
161
+ */
162
+ static compare(buf1: Buffer, buf2: Buffer): number;
163
+ /**
164
+ * Allocates a new buffer of {size} octets.
165
+ *
166
+ * @param size count of octets to allocate.
167
+ * @param fill if specified, buffer will be initialized by calling buf.fill(fill).
168
+ * If parameter is omitted, buffer will be filled with zeros.
169
+ * @param encoding encoding used for call to buf.fill while initalizing
170
+ */
171
+ static alloc(size: number, fill?: string | Buffer | number, encoding?: string): Buffer;
172
+ /**
173
+ * Allocates a new buffer of {size} octets, leaving memory not initialized, so the contents
174
+ * of the newly created Buffer are unknown and may contain sensitive data.
175
+ *
176
+ * @param size count of octets to allocate
177
+ */
178
+ static allocUnsafe(size: number): Buffer;
179
+ /**
180
+ * Allocates a new non-pooled buffer of {size} octets, leaving memory not initialized, so the contents
181
+ * of the newly created Buffer are unknown and may contain sensitive data.
182
+ *
183
+ * @param size count of octets to allocate
184
+ */
185
+ static allocUnsafeSlow(size: number): Buffer;
186
+ }
187
+ }
@@ -0,0 +1,62 @@
1
+ /* eslint-disable node/no-deprecated-api */
2
+ var buffer = require('buffer')
3
+ var Buffer = buffer.Buffer
4
+
5
+ // alternative to using Object.keys for old browsers
6
+ function copyProps (src, dst) {
7
+ for (var key in src) {
8
+ dst[key] = src[key]
9
+ }
10
+ }
11
+ if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
12
+ module.exports = buffer
13
+ } else {
14
+ // Copy properties from require('buffer')
15
+ copyProps(buffer, exports)
16
+ exports.Buffer = SafeBuffer
17
+ }
18
+
19
+ function SafeBuffer (arg, encodingOrOffset, length) {
20
+ return Buffer(arg, encodingOrOffset, length)
21
+ }
22
+
23
+ // Copy static methods from Buffer
24
+ copyProps(Buffer, SafeBuffer)
25
+
26
+ SafeBuffer.from = function (arg, encodingOrOffset, length) {
27
+ if (typeof arg === 'number') {
28
+ throw new TypeError('Argument must not be a number')
29
+ }
30
+ return Buffer(arg, encodingOrOffset, length)
31
+ }
32
+
33
+ SafeBuffer.alloc = function (size, fill, encoding) {
34
+ if (typeof size !== 'number') {
35
+ throw new TypeError('Argument must be a number')
36
+ }
37
+ var buf = Buffer(size)
38
+ if (fill !== undefined) {
39
+ if (typeof encoding === 'string') {
40
+ buf.fill(fill, encoding)
41
+ } else {
42
+ buf.fill(fill)
43
+ }
44
+ } else {
45
+ buf.fill(0)
46
+ }
47
+ return buf
48
+ }
49
+
50
+ SafeBuffer.allocUnsafe = function (size) {
51
+ if (typeof size !== 'number') {
52
+ throw new TypeError('Argument must be a number')
53
+ }
54
+ return Buffer(size)
55
+ }
56
+
57
+ SafeBuffer.allocUnsafeSlow = function (size) {
58
+ if (typeof size !== 'number') {
59
+ throw new TypeError('Argument must be a number')
60
+ }
61
+ return buffer.SlowBuffer(size)
62
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "safe-buffer",
3
+ "description": "Safer Node.js Buffer API",
4
+ "version": "5.1.2",
5
+ "author": {
6
+ "name": "Feross Aboukhadijeh",
7
+ "email": "feross@feross.org",
8
+ "url": "http://feross.org"
9
+ },
10
+ "bugs": {
11
+ "url": "https://github.com/feross/safe-buffer/issues"
12
+ },
13
+ "devDependencies": {
14
+ "standard": "*",
15
+ "tape": "^4.0.0"
16
+ },
17
+ "homepage": "https://github.com/feross/safe-buffer",
18
+ "keywords": [
19
+ "buffer",
20
+ "buffer allocate",
21
+ "node security",
22
+ "safe",
23
+ "safe-buffer",
24
+ "security",
25
+ "uninitialized"
26
+ ],
27
+ "license": "MIT",
28
+ "main": "index.js",
29
+ "types": "index.d.ts",
30
+ "repository": {
31
+ "type": "git",
32
+ "url": "git://github.com/feross/safe-buffer.git"
33
+ },
34
+ "scripts": {
35
+ "test": "standard && tape test/*.js"
36
+ }
37
+ }
@@ -0,0 +1,1114 @@
1
+ ## v4.0.0-beta.3
2
+
3
+ * Removed support for legacy actions.
4
+ This will also remove "Bride Mode" support, which was introduced to translate of action class to legacy API.
5
+ * Remove devtools support for v86,v87 and adding support for v89, v90, v91
6
+ * make isPromise() return boolean value for null and undefined cases (#6785)
7
+ * code cleanup (#9158)
8
+ * replacing asserts equal with strictEqual and deepEqual with deepStrictEqual
9
+
10
+
11
+ ## v4.0.0-beta.2
12
+
13
+ * Removed support for Edge legacy.
14
+ * Make the build silent for WebDriver Bidi generated code
15
+ * resolve file path correctly (#9223)
16
+ * Update example in edge.js (#9231)
17
+ * Use a flat namespace for selenium options for finding WebDriver Bidi endpoint
18
+ * Removing duplicate license text updated by update_copyright.js
19
+ * Updating copyright text
20
+ * Minor code cleanup
21
+ * Removing duplicate variable declaration of IE from capabilities
22
+
23
+ ## v4.0.0-beta.1
24
+
25
+ * JS Binding support for WebDriver Bidi in Firefox
26
+ - This requires Firefox 87 and Geckodriver 0.29 to be able to work
27
+ * Update the supported CDP versions
28
+ * Update tmp package version (#9155)
29
+ * Adding support for /computedlabel (getAccessibleName) (#9073)
30
+ * Adding support for computedrole (#8990)
31
+ * Use subfolder for NPM package homepage (#8938)
32
+ * Fix typo: tracingCategories -> traceCategories (#8976)
33
+ * Package up mutation-listener for node. Fixes #8955
34
+ * Adding support for `print` endpoint (#8880)
35
+
36
+ ## v4.0.0-alpha.8
37
+
38
+ * Rolling back native support for Opera Browser
39
+ * Added new ieOptions capabilities:
40
+ - fileUploadDialogTimeout
41
+ - setEdgePath
42
+ - setEdgeChromium
43
+ - setScrollBehavior
44
+ - For consistent naming, deprecating `addArguments(...args)` in favor of `addBrowserCommandSwitches(...args)`
45
+
46
+ * Added relative locators
47
+ * Added Chrome DevTools Protocol (CDP) support
48
+ * Added support for BASIC authentication.
49
+ * Added listener for DOM mutations.
50
+ * Added support for listening out for console log events.
51
+ * Added support listening js exceptions using CDP
52
+
53
+ ### API Changes
54
+
55
+ * Added the 'opera' module
56
+
57
+ ## v4.0.0-alpha.4
58
+
59
+ ### Changes
60
+
61
+ * Removed BUILD.bazel files from the build artifact
62
+
63
+
64
+ ## v4.0.0-alpha.3
65
+
66
+ ### Notice
67
+
68
+ * The minimum supported version of Node is now 10.15.0 LTS
69
+
70
+ ### Changes
71
+
72
+ * add `pollTimeout` argument to the `wait()` method. Default value is `200`ms
73
+ * add `switchTo().parentFrame()` for non-W3C compatible drivers
74
+ * add support for opening a new window
75
+
76
+ ### API Changes
77
+
78
+ * Export `lib/input.Origin` from the top level `selenium-webdriver` module.
79
+ * HTTP requests from this library will now include a User-Agent of the form
80
+ `selenium/${VERSION} (js ${PLATFORM})`.
81
+
82
+
83
+ ## v4.0.0-alpha.1
84
+
85
+ ### Notice
86
+
87
+ * The minimum supported version of Node is now 8.9.0 LTS
88
+
89
+ ### Changes to Supported Browsers
90
+
91
+ Native support has been removed for Opera and PhantomJS as the WebDriver
92
+ implementations for these browsers are no longer under active development.
93
+
94
+ For Opera, users should be able to simply rely on testing Chrome as the Opera
95
+ browser is based on Chromium (and the operadriver was a thin wrapper around
96
+ chromedriver). For PhantomJS, users should use Chrome or Firefox in headless
97
+ mode (see `example/headless.js`)
98
+
99
+ ### Changes for W3C WebDriver Spec Compliance
100
+
101
+ * Revamped the actions API to conform with the WebDriver Spec:
102
+ <https://www.w3.org/TR/webdriver/#actions>. For details, refer to the JS doc
103
+ on the `lib/input.Actions` class.
104
+
105
+ As of January, 2018, only Firefox natively supports this new API. You can
106
+ put the `Actions` class into "bridge mode" and it will attempt to translate
107
+ mouse and keyboard actions to the legacy API (see class docs). Alternatively,
108
+ you may continue to use the legacy API directly via the `lib/actions` module.
109
+ __NOTE:__ The legacy API is considered strongly deprecated and will be
110
+ removed in a minor release once Google's Chrome and Microsoft's Edge browsers
111
+ support the new API.
112
+
113
+ * All window manipulation commands are now supported.
114
+ * Added `driver.switchTo().parentFrame()`
115
+ * When a named cookie is requested, attempt to fetch it directly using the
116
+ W3C endpoint, `GET /session/{session id}/cookie/{name}`. If this command is
117
+ not recognized by the remote end, fallback to fetching all cookies and then
118
+ searching for the desired name.
119
+ * Replaced `WebElement.getSize()` and `WebElement.getLocation()` with a single
120
+ method, `WebElement.getRect()`.
121
+
122
+ ### API Changes
123
+
124
+ * The core WebDriver API no longer uses promise manager
125
+ - Removed `index.Builder#setControlFlow()`
126
+ - The following thenable types no longer have a `cancel()` method:
127
+ - The dynamically generated thenable WebDrivers created by `index.Builder`
128
+ - `lib/webdriver.AlertPromise`
129
+ - `lib/webdriver.WebElementPromise`
130
+ * Removed `remote/index.DriverService.prototype.stop()` (use `#kill()` instead)
131
+ * Removed the `lib/actions` module
132
+ * Removed the `lib/events` module
133
+ * Removed the `phantomjs` module
134
+ * Removed the 'opera' module
135
+ * Removed the promise manager from `lib/promise`, which includes the removal
136
+ of the following exported names (replacements, if any, in parentheses):
137
+ - CancellableThenable
138
+ - CancellationError
139
+ - ControlFlow
140
+ - Deferred
141
+ - LONG_STACK_TRACES
142
+ - MultipleUnhandledRejectionError
143
+ - Promise (use native Promises)
144
+ - Resolver
145
+ - Scheduler
146
+ - Thenable
147
+ - USE_PROMISE_MANAGER
148
+ - all (use Promise.all)
149
+ - asap (use Promise.resolve)
150
+ - captureStackTrace (use Error.captureStackTrace)
151
+ - consume (use async functions)
152
+ - controlFlow
153
+ - createPromise (use new Promise)
154
+ - defer
155
+ - fulfilled (use Promise.resolve)
156
+ - isGenerator
157
+ - rejected (use Promise.reject)
158
+ - setDefaultFlow
159
+ - when (use Promise.resolve)
160
+ * Changes to the `Builder` class:
161
+ - Added setChromeService, setEdgeService, & setFirefoxService
162
+ - Removed setEnableNativeEvents
163
+ - Removed setScrollBehavior
164
+ * Changes to `chrome.Driver`
165
+ - Added sendDevToolsCommand
166
+ - Added setDownloadPath
167
+ * Changes to `chrome.Options`
168
+ - Now extends the `Capabilities` class
169
+ - Removed from/toCapabilities
170
+ * Changes to `edge.Options`
171
+ - Now extends the `Capabilities` class
172
+ - Removed from/toCapabilities
173
+ * Changes to `ie.Options`
174
+ - Now extends the `Capabilities` class
175
+ - Removed from/toCapabilities
176
+ * Removed the `firefox.Binary` class. Custom binaries can still be selected
177
+ using `firefox.Options#setBinary()`. Likewise, custom binary arguments can be
178
+ specified with `firefox.Options#addArguments()`.
179
+ * Changes to `firefox.Driver`
180
+ - Added installAddon(path)
181
+ - Added uninstallAddon(id)
182
+ * Changes to `firefox.Options`
183
+ - Now extends the `Capabilities` class
184
+ - Removed from/toCapabilities
185
+ - Removed setLoggingPreferences (was a no-op)
186
+ - setProfile now only accepts a path to an existing profile
187
+ - Added addExtensions
188
+ - Added setPreference
189
+ * Removed the `firefox.Profile` class. All of its functionality is now
190
+ provided directly by `firefox.Options`
191
+ * Removed the `firefox/binary` module
192
+ * Removed the `firefox/profile` module
193
+ * Changes to `safari.Options`
194
+ - Now extends the `Capabilities` class
195
+ - Removed from/toCapabilities
196
+ - Removed setCleanSession (was a no-op)
197
+ * Changes to `lib/capabilities.Browser`:
198
+ - Removed several enum values.
199
+ - ANDROID (use Chrome for Android; see docs on the chrome module)
200
+ - IPAD (no support available)
201
+ - IPHONE (no support available)
202
+ - OPERA (use Chrome)
203
+ - PHANTOM_JS (use Chrome or Firefox in headless mode)
204
+ - HTMLUNIT (use Chrome or Firefox in headless mode)
205
+ * Changes to `lib/capabilities.Capabilities`:
206
+ - Removed static factory methods android(), ipad(), iphone(), opera(),
207
+ phantomjs(), htmlunit(), and htmlunitwithjs(). Users can still manually
208
+ configure capabilities for these, but their use is not recommended and
209
+ they will no longer be surfaced in the API.
210
+ * Changes to `lib/error`:
211
+ - Added
212
+ - ElementClickInterceptedError
213
+ - InsecureCertificateError
214
+ - InvalidCoordinatesError
215
+ - NoSuchCookieError
216
+ - Removed
217
+ - ElementNotVisibleError
218
+ - InvalidElementCoordinatesError
219
+ * Changes to `lib/webdriver.WebDriver`:
220
+ - Dropped support for "requiredCapabilities" from WebDriver.createSession
221
+ - actions() now returns the new `lib/input.Actions` class
222
+ - Removed touchActions
223
+ - Renamed schedule to execute
224
+ - Removed the `WebDriver.attachToSession()` factory method. Users can just
225
+ the `WebDriver` constructor directly instead.
226
+ - Removed the `call()` method. This was used to inject custom function calls
227
+ into the control flow. Now that the promise manager is no longer used,
228
+ this method is no longer necessary. Users are now responsible for
229
+ coordinating actions (ideally with async functions) and can just call
230
+ functions directly instead of through `driver.call()`.
231
+ * Changes to `lib/webdriver.WebElement`:
232
+ - Replaced getSize & getLocation with getRect
233
+ * Changes to `lib/webdriver.Alert`:
234
+ - Removed authenticateAs
235
+ * Changes to `lib/webdriver.Options` (`driver.manage()`):
236
+ - Removed timeouts (use get/setTimeouts)
237
+ * Changes to `lib/webdriver.Window` (`driver.manage().window()`):
238
+ - Added
239
+ - getRect
240
+ - setRect
241
+ - fullscreen
242
+ - minimize
243
+ - Removed (use the getRect/setRect methods)
244
+ - getPosition
245
+ - setPosition
246
+ - getSize
247
+ - setSize
248
+ * Removed the `testing/assert` module
249
+ * Changes to `testing/index`
250
+ - Since the promise manager has been removed, it is no longer necessary to
251
+ wrap the Mocha test hooks; instead, users can simply use async functions.
252
+ The following have all been removed:
253
+ - describe
254
+ - before
255
+ - beforeEach
256
+ - after
257
+ - afterEach
258
+ - it
259
+ - Added the `suite` function. For details, refer to the jsdoc or
260
+ `example/google_search_test.js`
261
+
262
+
263
+
264
+ ## v3.6.0
265
+
266
+ ### Bug Fixes
267
+
268
+ * The Capabilities factory methods should only specify the name of the browser.
269
+ * Protect against the remote end sometimes not returning a list to findElements
270
+ commands.
271
+ * Properly reset state in `remote.DriverService#kill()`
272
+ * The firefox module will no longer apply the preferences required by the legacy
273
+ FirefoxDriver. These preferences were only required when using the legacy
274
+ driver, support for which was dropped in v3.5.0.
275
+
276
+ ### API Changes
277
+
278
+ * Added new methods to `selenium-webdriver/firefox.Options`:
279
+ - addArguments()
280
+ - headless()
281
+ - windowSize()
282
+ * Deprecated `selenium-webdriver/firefox/binary.Binary`
283
+ * Removed `selenium-webdriver/firefox.Options#useGeckoDriver()`
284
+ * Removed the unused `selenium-webdriver/firefox/profile.decode()`
285
+ * Removed methods from `selenium-webdriver/firefox/profile.Profile` that had
286
+ no effect since support for the legacy FirefoxDriver was dropped in 3.5.0:
287
+ - setNativeEventsEnabled
288
+ - nativeEventsEnabled
289
+ - getPort
290
+ - setPort
291
+ * Removed `selenium-webdriver/firefox.ServiceBuilder#setFirefoxBinary()`; custom
292
+ binaries should be configured through the `firefox.Options` class.
293
+ * Removed `selenium-webdriver/firefox.Capability`. These hold overs from the
294
+ legacy FirefoxDriver are no longer supported.
295
+
296
+ ### Changes for W3C WebDriver Spec Compliance
297
+
298
+ * Deprecated `error.ElementNotVisibleError` in favor of the more generic
299
+ `error.ElementNotInteractableError`.
300
+ * Support the `httpOnly` option when adding a cookie.
301
+
302
+
303
+ ## v3.5.0
304
+
305
+ ### Notice
306
+
307
+ Native support for Firefox 45 (ESR) has been removed. Users will have to connect
308
+ to a remote Selenium server that supports Firefox 45.
309
+
310
+ ### Changes
311
+
312
+ * Removed native support for Firefox 46 and older.
313
+ - The `SELENIUM_MARIONETTE` enviornment variable no longer has an effect.
314
+ - `selenium-webdriver/firefox.Capability.MARIONETTE` is deprecated.
315
+ - `selenium-webdriver/firefox.Options#useGeckoDriver()` is deprecated and now a no-op.
316
+ * `firefox.Options` will no longer discard the `"moz:firefoxOptions"` set in
317
+ user provided capabilities (via `Builder.withCapabilities({})`). When both
318
+ are used, the settings in `firefox.Options` will be applied _last_.
319
+ * Added `chrome.Options#headless()` and `chrome.Options#windowSize()`, which
320
+ may be used to start Chrome in headless mode (requires Chrome 59+) and to set
321
+ the initial window size, respectively.
322
+
323
+
324
+ ### Changes for W3C WebDriver Spec Compliance
325
+
326
+ * Added `error.WebDriverError#remoteStacktrace` to capture the stacktrace
327
+ reported by a remote WebDriver endpoint (if any).
328
+ * Fixed `WebElement#sendKeys` to send text as a string instead of an array of
329
+ strings.
330
+
331
+ ## v3.4.0
332
+
333
+ ### Notice
334
+
335
+ This release requires [geckodriver 0.15.0](https://github.com/mozilla/geckodriver/releases/tag/v0.15.0) or newer.
336
+
337
+ ### API Changes
338
+
339
+ * Added `Options#getTimeouts()` for retrieving the currently configured session
340
+ timeouts (i.e. implicit wait). This method will only work with W3C compatible
341
+ WebDriver implementations.
342
+ * Deprecated the `Timeouts` class in favor of `Options#setTimeouts()`, which
343
+ supports setting multiple timeouts at once.
344
+ * Added support for emulating different network conditions (e.g., offline, 2G, WiFi) on Chrome.
345
+
346
+ ### Changes for W3C WebDriver Spec Compliance
347
+
348
+ * Fixed W3C response parsing, which expects response data to always be a JSON
349
+ object with a `value` key.
350
+ * Added W3C endpoints for interacting with various types of
351
+ [user prompts](https://w3c.github.io/webdriver/webdriver-spec.html#user-prompts).
352
+ * Added W3C endpoints for remotely executing scripts.
353
+ * Added W3C endpoints to get current window handle and all windows handles.
354
+
355
+
356
+ ## v3.3.0
357
+
358
+ * Added warning log messages when the user creates new managed promises, or
359
+ schedules unchained tasks. Users may opt in to printing these log messages
360
+ with
361
+
362
+ ```js
363
+ const {logging} = require('selenium-webdriver');
364
+ logging.installConsoleHandler();
365
+ logging.getLogger('promise.ControlFlow').setLevel(logging.Level.WARNING);
366
+ ```
367
+ * If the `JAVA_HOME` environment variable is set, use it to locate java.exe.
368
+
369
+
370
+ ## v3.2.0
371
+
372
+ * Release skipped to stay in sync with the main Selenium project.
373
+
374
+
375
+ ## v3.1.0
376
+
377
+ * The `lib` package is once again platform agnostic (excluding `lib/devmode`).
378
+ * Deprecated `promise.when(value, callback, errback)`.
379
+ Use `promise.fulfilled(value).then(callback, errback)`
380
+ * Changed `promise.fulfilled(value)`, `promise.rejected(reason)` and
381
+ `promise.defer()` to all use native promises when the promise manager is
382
+ disabled.
383
+ * Properly handle W3C error responses to new session commands.
384
+ * Updated `selenium-webdriver/testing` to export `describe.only` along with
385
+ `describe.skip`.
386
+ * Fixed `selenium-webdriver/lib/until.ableToSwitchToFrame`. It was previously
387
+ dropping arguments and would never work.
388
+ * Added the ability to use Firefox Nightly
389
+ * If Firefox cannot be found in the default location, look for it on the PATH
390
+ * Allow SafariDriver to use Safari Technology Preview.
391
+ * Use the proper wire command for WebElement.getLocation() and
392
+ WebElement.getSize() for W3C compliant drivers.
393
+
394
+
395
+ ## v3.0.1
396
+
397
+ * More API adjustments to align with native Promises
398
+ - Deprecated `promise.fulfilled(value)`, use `promise.Promise#resolve(value)`
399
+ - Deprecated `promise.rejected(reason)`, use `promise.Promise#reject(reason)`
400
+ * When a `wait()` condition times out, the returned promise will now be
401
+ rejected with an `error.TimeoutError` instead of a generic `Error` object.
402
+ * `WebDriver#wait()` will now throw a TypeError if an invalid wait condition is
403
+ provided.
404
+ * Properly catch unhandled promise rejections with an action sequence (only
405
+ impacts when the promise manager is disabled).
406
+
407
+
408
+ ## v3.0.0
409
+
410
+ * (__NOTICE__) The minimum supported version of Node is now 6.9.0 LTS
411
+ * Removed support for the SafariDriver browser extension. This has been
412
+ replaced by Apple's safaridriver, which is included wtih Safari 10
413
+ (available on OS X El Capitan and macOS Sierra).
414
+
415
+ To use Safari 9 or older, users will have to use an older version of Selenium.
416
+
417
+ * geckodriver v0.11.0 or newer is now required for Firefox.
418
+ * Fixed potential reference errors in `selenium-webdriver/testing` when users
419
+ create a cycle with mocha by running with mocha's `--hook` flag.
420
+ * Fixed `WebDriver.switchTo().activeElement()` to use the correct HTTP method
421
+ for compatibility with the W3C spec.
422
+ * Update the `selenium-webdriver/firefox` module to use geckodriver's
423
+ "moz:firefoxOptions" dictionary for Firefox-specific configuration values.
424
+ * Extending the `selenium-webdriver/testing` module to support tests defined
425
+ using generator functions.
426
+ * The promise manager can be disabled by setting an enviornment variable:
427
+ `SELENIUM_PROMISE_MANAGER=0`. This is part of a larger plan to remove the
428
+ promise manager, as documented at
429
+ <https://github.com/SeleniumHQ/selenium/issues/2969>
430
+ * When communicating with a W3C-compliant remote end, use the atoms library for
431
+ the `WebElement.getAttribute()` and `WebElement.isDisplayed()` commands. This
432
+ behavior is consistent with the java, .net, python, and ruby clients.
433
+
434
+
435
+ ### API Changes
436
+
437
+ * Removed `safari.Options#useLegacyDriver()`
438
+ * Reduced the API on `promise.Thenable` for compatibility with native promises:
439
+ - Removed `#isPending()`
440
+ - Removed `#cancel()`
441
+ - Removed `#finally()`
442
+ * Changed all subclasses of `webdriver.WebDriver` to overload the static
443
+ function `WebDriver.createSession()` instead of doing work in the
444
+ constructor. All constructors now inherit the base class' function signature.
445
+ Users are still encouraged to use the `Builder` class instead of creating
446
+ drivers directly.
447
+ * `Builder#build()` now returns a "thenable" WebDriver instance, allowing users
448
+ to immediately schedule commands (as before), or issue them through standard
449
+ promise callbacks. This is the same pattern already employed for WebElements.
450
+ * Removed `Builder#buildAsync()` as it was redundant with the new semantics of
451
+ `build()`.
452
+
453
+
454
+
455
+ ## v3.0.0-beta-3
456
+
457
+ * Fixed a bug where the promise manager would silently drop callbacks after
458
+ recovering from an unhandled promise rejection.
459
+ * Added the `firefox.ServiceBuilder` class, which may be used to customize the
460
+ geckodriver used for `firefox.Driver` instances.
461
+ * Added support for Safari 10 safaridriver. safaridriver may be disabled
462
+ via tha API, `safari.Options#useLegacyDriver`, to use the safari
463
+ extension driver.
464
+ * Updated the `lib/proxy` module to support configuring a SOCKS proxy.
465
+ * For the `promise.ControlFlow`, fire the "uncaughtException" event in a new
466
+ turn of the JS event loop. As a result of this change, any errors thrown by
467
+ an event listener will propagate to the global error handler. Previously,
468
+ this event was fired with in the context of a (native) promise callback,
469
+ causing errors to be silently suppressed in the promise chain.
470
+
471
+ ### API Changes
472
+
473
+ * Added `remote.DriverService.Builder` as a base class for configuring
474
+ DriverService instances that run in a child-process. The
475
+ `chrome.ServiceBuilder`, `edge.ServiceBuilder`, and `opera.ServiceBuilder`
476
+ classes now all extend this base class with browser-specific options.
477
+ * For each of the ServiceBuilder clases, renamed `usingPort` and
478
+ `withEnvironment` to `setPort` and `setEnvironment`, respectively.
479
+ * Renamed `chrome.ServiceBuilder#setUrlBasePath` to `#setPath`
480
+ * Changed the signature of the `firefox.Driver` from `(config, flow, executor)`
481
+ to `(config, executor, flow)`.
482
+ * Exposed the `Condition` and `WebElementCondition` classes from the top-level
483
+ `selenium-webdriver` module (these were previously only available from
484
+ `lib/webdriver`).
485
+
486
+
487
+ ### Changes for W3C WebDriver Spec Compliance
488
+
489
+ * Updated command mappings for [getting](https://w3c.github.io/webdriver/webdriver-spec.html#get-window-position)
490
+ and [setting](https://w3c.github.io/webdriver/webdriver-spec.html#set-window-position)
491
+ the window position.
492
+
493
+
494
+ ## v3.0.0-beta-2
495
+
496
+ ### API Changes
497
+
498
+ * Moved the `builder.Builder` class into the main module (`selenium-webdriver`).
499
+ * Removed the `builder` module.
500
+ * Fix `webdriver.WebDriver#setFileDetector` when driving Chrome or Firefox on a
501
+ remote machine.
502
+
503
+
504
+ ## v3.0.0-beta-1
505
+
506
+ * Allow users to set the agent used for HTTP connections through
507
+ `builder.Builder#usingHttpAgent()`
508
+ * Added new wait conditions: `until.urlIs()`, `until.urlContains()`,
509
+ `until.urlMatches()`
510
+ * Added work around for [GeckoDriver bug](https://bugzilla.mozilla.org/show_bug.cgi?id=1274924)
511
+ raising a type conversion error
512
+ * Internal cleanup replacing uses of managed promises with native promises
513
+ * Removed the mandatory use of Firefox Dev Edition, when using Marionette driver
514
+ * Fixed timeouts' URL
515
+ * Properly send HTTP requests when using a WebDriver server proxy
516
+ * Properly configure proxies when using the geckodriver
517
+ * `http.Executor` now accepts a promised client. The `builder.Builder` class
518
+ will now use this instead of a `command.DeferredExecutor` when creating
519
+ WebDriver instances.
520
+ * For Chrome and Firefox, the `builder.Builder` class will always return an
521
+ instanceof `chrome.Driver` and `firefox.Driver`, respectively, even when
522
+ configured to use a remote server (from `builder.Builder#usingServer(url)`,
523
+ `SELENIUM_REMOTE_URL`, etc).
524
+
525
+ ### API Changes
526
+
527
+ * `promise.Deferred` is no longer a thenable object.
528
+ * `Options#addCookie()` now takes a record object instead of 7 individual
529
+ parameters. A TypeError will be thrown if addCookie() is called with invalid
530
+ arguments.
531
+ * When adding cookies, the desired expiry must be provided as a Date or in
532
+ _seconds_ since epoch. When retrieving cookies, the expiration is always
533
+ returned in seconds.
534
+ * Renamed `firefox.Options#useMarionette` to `firefox.Options#useGeckoDriver`
535
+ * Removed deprecated modules:
536
+ - `selenium-webdriver/error` (use `selenium-webdriver/lib/error`,\
537
+ or the `error` property exported by `selenium-webdriver`)
538
+ - `selenium-webdriver/executors` — this was not previously deprecated, but
539
+ is no longer used.
540
+ * Removed deprecated types:
541
+ - `command.DeferredExecutor` — this was not previously deprecated, but is no
542
+ longer used. It can be trivially implemented by clients should it be
543
+ needed.
544
+ - `error.InvalidSessionIdError` (use `error.NoSuchSessionError`)
545
+ - `executors.DeferredExecutor`
546
+ - `until.Condition` (use `webdriver.Condition`)
547
+ - `until.WebElementCondition` (use `webdriver.WebElementCondition`)
548
+ - `webdriver.UnhandledAlertError` (use `error.UnexpectedAlertOpenError`)
549
+ * Removed deprecated functions:
550
+ - `Deferred#cancel()`
551
+ - `Deferred#catch()`
552
+ - `Deferred#finally()`
553
+ - `Deferred#isPending()`
554
+ - `Deferred#then()`
555
+ - `Promise#thenCatch()`
556
+ - `Promise#thenFinally()`
557
+ - `WebDriver#isElementPresent()`
558
+ - `WebElement#getInnerHtml()`
559
+ - `WebElement#getOuterHtml()`
560
+ - `WebElement#getRawId()`
561
+ - `WebElement#isElementPresent()`
562
+ * Removed deprecated properties:
563
+ - `WebDriverError#code`
564
+
565
+
566
+ ## v2.53.2
567
+
568
+ * Changed `io.exists()` to return a rejected promise if the input path is not
569
+ a string
570
+ * Deprecated `Promise#thenFinally()` - use `Promise#finally()`. The thenFinally
571
+ shim added to the promise module in v2.53.0 will be removed in v3.0
572
+ Sorry for the churn!
573
+ * FIXED: capabilities serialization now properly handles undefined vs.
574
+ false-like values.
575
+ * FIXED: properly handle responses from the remote end in
576
+ `WebDriver.attachToSession`
577
+
578
+ ## v2.53.1
579
+
580
+ * FIXED: for consistency with the other language bindings, `remote.FileDetector`
581
+ will ignore paths that refer to a directory.
582
+
583
+ ## v2.53.0
584
+
585
+ ### Change Summary
586
+
587
+ * Added preliminary support for Marionette, Mozilla's WebDriver implementation
588
+ for Firefox. Marionette may be enabled via the API,
589
+ `firefox.Options#useMarionette`, or by setting the `SELENIUM_MARIONETTE`
590
+ environment variable.
591
+ * Moved all logic for parsing and interpreting responses from the remote end
592
+ into the individual `command.Executor` implementations.
593
+ * For consistency with the other Selenium language bindings,
594
+ `WebDriver#isElementPresent()` and `WebElement#isElementPresent()` have
595
+ been deprecated. These methods will be removed in v3.0. Use the findElements
596
+ command to test for the presence of an element:
597
+
598
+ driver.findElements(By.css('.foo')).then(found => !!found.length);
599
+ * Added support for W3C-spec compliant servers.
600
+ * For consistent naming, deprecating `error.InvalidSessionIdError` in favor of
601
+ `error.NoSuchSessionError`.
602
+ * Moved the `error` module to `lib/error` so all core modules are co-located.
603
+ The top-level `error` module will be removed in v3.0.
604
+ * Moved `until.Condition` and `until.WebElementCondition` to the webdriver
605
+ module to break a circular dependency.
606
+ * Added support for setting the username and password in basic auth pop-up
607
+ dialogs (currently IE only).
608
+ * Deprecated `WebElement#getInnerHtml()` and `WebEleemnt#getOuterHtml()`
609
+ * Deprecated `Promise#thenCatch()` - use `Promise#catch()` instead
610
+ * Deprecated `Promise#thenFinally()` - use `promise.thenFinally()` instead
611
+ * FIXED: `io.findInPath()` will no longer match against directories that have
612
+ the same basename as the target file.
613
+ * FIXED: `phantomjs.Driver` now takes a third argument that defines the path to
614
+ a log file to use for the phantomjs executable's output. This may be quickly
615
+ set at runtime with the `SELENIUM_PHANTOMJS_LOG` environment variable.
616
+
617
+ ### Changes for W3C WebDriver Spec Compliance
618
+
619
+ * Changed `element.sendKeys(...)` to send the key sequence as an array where
620
+ each element defines a single key. The legacy wire protocol permits arrays
621
+ where each element is a string of arbitrary length. This change is solely
622
+ at the protocol level and should have no user-visible effect.
623
+
624
+
625
+ ## v2.52.0
626
+
627
+ ### Notice
628
+
629
+ Starting with v2.52.0, each release of selenium-webdriver will support the
630
+ latest _minor_ LTS and stable Node releases. All releases between the LTS and
631
+ stable release will have best effort support. Further details are available in
632
+ the selenium-webdriver package README.
633
+
634
+ ### Change Summary
635
+
636
+ * Add support for Microsoft's Edge web browser
637
+ * Added `webdriver.Builder#buildAsync()`, which returns a promise that will be
638
+ fulfilled with the newly created WebDriver instance once the associated
639
+ browser has been full initialized. This is purely a convenient alternative
640
+ to the existing build() method as the WebDriver class will always defer
641
+ commands until it has a fully created browser.
642
+ * Added `firefox.Profile#setHost()` which may be used to set the host that
643
+ the FirefoxDriver's server listens for commands on. The server uses
644
+ "localhost" by default.
645
+ * Added `promise.Promise#catch()` for API compatibility with native Promises.
646
+ `promise.Promise#thenCatch()` is not yet deprecated, but it simply
647
+ delegates to `catch`.
648
+ * Changed some `io` operations to use native promises.
649
+ * Changed `command.Executor#execute()` and `HttpClient#send()` to return
650
+ promises instead of using callback passing.
651
+ * Replaced the `Serializable` class with an internal, Symbol-defined method.
652
+ * Changed the `Capabilities` class to extend the native `Map` type.
653
+ * Changed the `Capabilities.has(key)` to only test if a capability has been set
654
+ (Map semantics). To check whether the value is true, use `get(key)`.
655
+ * Deprecated `executors.DeferredExecutor` in favor of
656
+ `lib/command.DeferredExecutor`.
657
+ * API documentation is no longer distributed with the npm package, but remains
658
+ available at <http://seleniumhq.github.io/selenium/docs/api/javascript/>
659
+ * Rewrote the `error` module to export an Error subtype for each type of error
660
+ defined in the [W3C WebDriver spec](https://w3c.github.io/webdriver/webdriver-spec.html#handling-errors).
661
+ * Changed the `http.Request` and `http.Response` classes to store headers in
662
+ maps instead of object literals.
663
+ * Updated `ws` dependency to version `1.0.1`.
664
+ * Removed fluent predicates "is" and "not" from the experimental
665
+ `testing/assert` module.
666
+ * Wait conditions that locate an element, or that wait on an element's state,
667
+ will return a WebElementPromise.
668
+ * Lots of internal clean-up to break selenium-webdriver's long standing
669
+ dependency on Google's Closure library.
670
+
671
+ ### Changes for W3C WebDriver Spec Compliance
672
+
673
+ * Updated the `By` locators that are not in the W3C spec to delegated to using
674
+ CSS selectors: `By.className`, `By.id`, `By.name`, and `By.tagName`.
675
+
676
+
677
+ ## v2.49-51
678
+
679
+ * _Releases skipped to stay in sync with the rest of the Selenium project_
680
+
681
+
682
+ ## v2.48.2
683
+
684
+ * Added `WebElement#takeScreenshot()`.
685
+ * More adjustments to promise callback tracking.
686
+
687
+ ## v2.48.1
688
+
689
+ * FIXED: Adjusted how the control flow tracks promise callbacks to avoid a
690
+ potential deadlock.
691
+
692
+ ## v2.48.0
693
+
694
+ * Node v0.12.x users must run with --harmony. _This is the last release that
695
+ will support v0.12.x_
696
+ * FIXED: (Promise/A+ compliance) When a promise is rejected with a thenable,
697
+ the promise adopts the thenable as its rejection reason instead of waiting
698
+ for it to settle. The previous (incorrect) behavior was hidden by bugs in
699
+ the `promises-aplus-tests` compliance test suite that were fixed in version
700
+ `2.1.1`.
701
+ * FIXED: the `webdriver.promise.ControlFlow` now has a consistent execution
702
+ order for tasks/callbacks scheduled in different turns of the JS event loop.
703
+ Refer to the `webdriver.promise` documentation for more details.
704
+ * FIXED: do not drop user auth from the WebDriver server URL.
705
+ * FIXED: a single `firefox.Binary` instance may be used to configure and
706
+ launch multiple FirefoxDriver sessions.
707
+
708
+ var binary = new firefox.Binary();
709
+ var options = new firefox.Options().setBinary(binary);
710
+ var builder = new Builder().setFirefoxOptions(options);
711
+
712
+ var driver1 = builder.build();
713
+ var driver2 = builder.build();
714
+
715
+ * FIXED: zip files created for transfer to a remote WebDriver server are no
716
+ longer compressed. If the zip contained a file that was already compressed,
717
+ the server would return an "invalid code lengths set" error.
718
+ * FIXED: Surfaced the `loopback` option to `remote/SeleniumServer`. When set,
719
+ the server will be accessed using the current host's loopback address.
720
+
721
+ ## v2.47.0
722
+
723
+ ### Notice
724
+
725
+ This is the last release for `selenium-webdriver` that will support ES5.
726
+ Subsequent releases will depend on ES6 features that are enabled by
727
+ [default](https://nodejs.org/en/docs/es6/) in Node v4.0.0. Node v0.12.x will
728
+ continue to be supported, but will require setting the `--harmony` flag.
729
+
730
+ ### Change Summary
731
+
732
+ * Add support for [Node v4.0.0](https://nodejs.org/en/blog/release/v4.0.0/)
733
+ * Updated `ws` dependency from `0.7.1` to `0.8.0`
734
+ * Bumped the minimum supported version of Node from `0.10.x` to `0.12.x`. This
735
+ is in accordance with the Node support policy established in `v2.45.0`.
736
+
737
+ ## v2.46.1
738
+
739
+ * Fixed internal module loading on Windows.
740
+ * Fixed error message format on timeouts for `until.elementLocated()`
741
+ and `until.elementsLocated()`.
742
+
743
+ ## v2.46.0
744
+
745
+ * Exposed a new logging API via the `webdriver.logging` module. For usage, see
746
+ `example/logging.js`.
747
+ * Added support for using a proxy server for WebDriver commands.
748
+ See `Builder#usingWebDriverProxy()` for more info.
749
+ * Removed deprecated functions:
750
+ * Capabilities#toJSON()
751
+ * UnhandledAlertError#getAlert()
752
+ * chrome.createDriver()
753
+ * phantomjs.createDriver()
754
+ * promise.ControlFlow#annotateError()
755
+ * promise.ControlFlow#await()
756
+ * promise.ControlFlow#clearHistory()
757
+ * promise.ControlFlow#getHistory()
758
+ * Removed deprecated enum values: `ErrorCode.NO_MODAL_DIALOG_OPEN` and
759
+ `ErrorCode.MODAL_DIALOG_OPENED`. Use `ErrorCode.NO_SUCH_ALERT` and
760
+ `ErrorCode.UNEXPECTED_ALERT_OPEN`, respectively.
761
+ * FIXED: The `promise.ControlFlow` will maintain state for promise chains
762
+ generated in a loop.
763
+ * FIXED: Correct serialize target elements used in an action sequence.
764
+ * FIXED: `promise.ControlFlow#wait()` now has consistent semantics for an
765
+ omitted or 0-timeout: it will wait indefinitely.
766
+ * FIXED: `remote.DriverService#start()` will now fail if the child process dies
767
+ while waiting for the server to start accepting requests. Previously, start
768
+ would continue to poll the server address until the timeout expired.
769
+ * FIXED: Skip launching Firefox with the `-silent` flag to preheat the profile.
770
+ Starting with Firefox 38, this would cause the browser to crash. This step,
771
+ which was first introduced for Selenium's java client back with Firefox 2,
772
+ no longer appears to be required.
773
+ * FIXED: 8564: `firefox.Driver#quit()` will wait for the Firefox process to
774
+ terminate before deleting the temporary webdriver profile. This eliminates a
775
+ race condition where Firefox would write profile data during shutdown,
776
+ causing the `rm -rf` operation on the profile directory to fail.
777
+
778
+ ## v2.45.1
779
+
780
+ * FIXED: 8548: Task callbacks are once again dropped if the task was cancelled
781
+ due to a previously uncaught error within the frame.
782
+ * FIXED: 8496: Extended the `chrome.Options` API to cover all configuration
783
+ options (e.g. mobile emulation and performance logging) documented on the
784
+ ChromeDriver [project site](https://chromedriver.chromium.org/capabilities).
785
+
786
+ ## v2.45.0
787
+
788
+ ### Important Policy Change
789
+
790
+ Starting with the 2.45.0 release, selenium-webdriver will support the last
791
+ two stable minor releases for Node. For 2.45.0, this means Selenium will
792
+ support Node 0.10.x and 0.12.x. Support for the intermediate, un-stable release
793
+ (0.11.x) is "best-effort". This policy will be re-evaluated once Node has a
794
+ major version release (i.e. 1.0.0).
795
+
796
+ ### Change Summary
797
+
798
+ * Added native browser support for Internet Explorer, Opera 26+, and Safari
799
+ * With the release of [Node 0.12.0](http://blog.nodejs.org/2015/02/06/node-v0-12-0-stable/)
800
+ (finally!), the minimum supported version of Node is now `0.10.x`.
801
+ * The `promise` module is now [Promises/A+](https://promisesaplus.com/)
802
+ compliant. The biggest compliance change is that promise callbacks are now
803
+ invoked in a future turn of the JS event loop. For example:
804
+
805
+ var promise = require('selenium-webdriver').promise;
806
+ console.log('start');
807
+ promise.fulfilled().then(function() {
808
+ console.log('middle');
809
+ });
810
+ console.log('end');
811
+
812
+ // Output in selenium-webdriver@2.44.0
813
+ // start
814
+ // middle
815
+ // end
816
+ //
817
+ // Output in selenium-webdriver@2.45.0
818
+ // start
819
+ // end
820
+ // middle
821
+
822
+ The `promise.ControlFlow` class has been updated to track the asynchronous
823
+ breaks required by Promises/A+, so there are no changes to task execution
824
+ order.
825
+ * Updated how errors are annotated on failures. When a task fails, the
826
+ stacktrace from when that task was scheduled is appended to the rejection
827
+ reason with a `From: ` prefix (if it is an Error object). For example:
828
+
829
+ var driver = new webdriver.Builder().forBrowser('chrome').build();
830
+ driver.get('http://www.google.com/ncr');
831
+ driver.call(function() {
832
+ driver.wait(function() {
833
+ return driver.isElementPresent(webdriver.By.id('not-there'));
834
+ }, 2000, 'element not found');
835
+ });
836
+
837
+ This code will fail an error like:
838
+
839
+ Error: element not found
840
+ Wait timed out after 2002ms
841
+ at <stack trace>
842
+ From: Task: element not found
843
+ at <stack trace>
844
+ From: Task: WebDriver.call(function)
845
+ at <stack trace>
846
+
847
+ * Changed the format of strings returned by `promise.ControlFlow#getSchedule`.
848
+ This function now accepts a boolean to control whether the returned string
849
+ should include the stacktraces for when each task was scheduled.
850
+ * Deprecating `promise.ControlFlow#getHistory`,
851
+ `promise.ControlFlow#clearHistory`, and `promise.ControlFlow#annotateError`.
852
+ These functions were all intended for internal use and are no longer
853
+ necessary, so they have been made no-ops.
854
+ * `WebDriver.wait()` may now be used to wait for a promise to resolve, with
855
+ an optional timeout. Refer to the API documentation for more information.
856
+ * Added support for copying files to a remote Selenium via `sendKeys` to test
857
+ file uploads. Refer to the API documentation for more information. Sample
858
+ usage included in `test/upload_test.js`
859
+ * Expanded the interactions API to include touch actions.
860
+ See `WebDriver.touchActions()`.
861
+ * FIXED: 8380: `firefox.Driver` will delete its temporary profile on `quit`.
862
+ * FIXED: 8306: Stack overflow in promise callbacks eliminated.
863
+ * FIXED: 8221: Added support for defining custom command mappings. Includes
864
+ support for PhantomJS's `executePhantomJS` (requires PhantomJS 1.9.7 or
865
+ GhostDriver 1.1.0).
866
+ * FIXED: 8128: When the FirefoxDriver marshals an object to the page for
867
+ `executeScript`, it defines additional properties (required by the driver's
868
+ implementation). These properties will no longer be enumerable and should
869
+ be omitted (i.e. they won't show up in JSON.stringify output).
870
+ * FIXED: 8094: The control flow will no longer deadlock when a task returns
871
+ a promise that depends on the completion of sub-tasks.
872
+
873
+ ## v2.44.0
874
+
875
+ * Added the `until` module, which defines common explicit wait conditions.
876
+ Sample usage:
877
+
878
+ var firefox = require('selenium-webdriver/firefox'),
879
+ until = require('selenium-webdriver/until');
880
+
881
+ var driver = new firefox.Driver();
882
+ driver.get('http://www.google.com/ncr');
883
+ driver.wait(until.titleIs('Google Search'), 1000);
884
+
885
+ * FIXED: 8000: `Builder.forBrowser()` now accepts an empty string since some
886
+ WebDriver implementations ignore the value. A value must still be specified,
887
+ however, since it is a required field in WebDriver's wire protocol.
888
+ * FIXED: 7994: The `stacktrace` module will not modify stack traces if the
889
+ initial parse fails (e.g. the user defined `Error.prepareStackTrace`)
890
+ * FIXED: 5855: Added a module (`until`) that defines several common conditions
891
+ for use with explicit waits. See updated examples for usage.
892
+
893
+ ## v2.43.5
894
+
895
+ * FIXED: 7905: `Builder.usingServer(url)` once again returns `this` for
896
+ chaining.
897
+
898
+ ## v2.43.2-4
899
+
900
+ * No changes; version bumps while attempting to work around an issue with
901
+ publishing to npm (a version string may only be used once).
902
+
903
+ ## v2.43.1
904
+
905
+ * Fixed an issue with flakiness when setting up the Firefox profile that could
906
+ prevent the driver from initializing properly.
907
+
908
+ ## v2.43.0
909
+
910
+ * Added native support for Firefox - the Java Selenium server is no longer
911
+ required.
912
+ * Added support for generator functions to `ControlFlow#execute` and
913
+ `ControlFlow#wait`. For more information, see documentation on
914
+ `webdriver.promise.consume`. Requires harmony support (run with
915
+ `node --harmony-generators` in `v0.11.x`).
916
+ * Various improvements to the `Builder` API. Notably, the `build()` function
917
+ will no longer default to attempting to use a server at
918
+ `http://localhost:4444/wd/hub` if it cannot start a browser directly -
919
+ you must specify the WebDriver server with `usingServer(url)`. You can
920
+ also set the target browser and WebDriver server through a pair of
921
+ environment variables. See the documentation on the `Builder` constructor
922
+ for more information.
923
+ * For consistency with the other language bindings, added browser specific
924
+ classes that can be used to start a browser without the builder.
925
+
926
+ var webdriver = require('selenium-webdriver')
927
+ chrome = require('selenium-webdriver/chrome');
928
+
929
+ // The following are equivalent.
930
+ var driver1 = new webdriver.Builder().forBrowser('chrome').build();
931
+ var driver2 = new chrome.Driver();
932
+
933
+ * Promise A+ compliance: a promise may no longer resolve to itself.
934
+ * For consistency with other language bindings, deprecated
935
+ `UnhandledAlertError#getAlert` and added `#getAlertText`.
936
+ `getAlert` will be removed in `2.45.0`.
937
+ * FIXED: 7641: Deprecated `ErrorCode.NO_MODAL_DIALOG_OPEN` and
938
+ `ErrorCode.MODAL_DIALOG_OPENED` in favor of the new
939
+ `ErrorCode.NO_SUCH_ALERT` and `ErrorCode.UNEXPECTED_ALERT_OPEN`,
940
+ respectively.
941
+ * FIXED: 7563: Mocha integration no longer disables timeouts. Default Mocha
942
+ timeouts apply (2000 ms) and may be changed using `this.timeout(ms)`.
943
+ * FIXED: 7470: Make it easier to create WebDriver instances in custom flows for
944
+ parallel execution.
945
+
946
+ ## v2.42.1
947
+
948
+ * FIXED: 7465: Fixed `net.getLoopbackAddress` on Windows
949
+ * FIXED: 7277: Support `done` callback in Mocha's BDD interface
950
+ * FIXED: 7156: `Promise#thenFinally` should not suppress original error
951
+
952
+ ## v2.42.0
953
+
954
+ * Removed deprecated functions `Promise#addCallback()`,
955
+ `Promise#addCallbacks()`, `Promise#addErrback()`, and `Promise#addBoth()`.
956
+ * Fail with a more descriptive error if the server returns a malformed redirect
957
+ * FIXED: 7300: Connect to ChromeDriver using the loopback address since
958
+ ChromeDriver 2.10.267517 binds to localhost by default.
959
+ * FIXED: 7339: Preserve wrapped test function's string representation for
960
+ Mocha's BDD interface.
961
+
962
+ ## v2.41.0
963
+
964
+ * FIXED: 7138: export logging API from webdriver module.
965
+ * FIXED: 7105: beforeEach/it/afterEach properly bind `this` for Mocha tests.
966
+
967
+ ## v2.40.0
968
+
969
+ * API documentation is now included in the docs directory.
970
+ * Added utility functions for working with an array of promises:
971
+ `promise.all`, `promise.map`, and `promise.filter`
972
+ * Introduced `Promise#thenCatch()` and `Promise#thenFinally()`.
973
+ * Deprecated `Promise#addCallback()`, `Promise#addCallbacks()`,
974
+ `Promise#addErrback()`, and `Promise#addBoth()`.
975
+ * Removed deprecated function `webdriver.WebDriver#getCapability`.
976
+ * FIXED: 6826: Added support for custom locators.
977
+
978
+ ## v2.39.0
979
+
980
+ * Version bump to stay in sync with the Selenium project.
981
+
982
+ ## v2.38.1
983
+
984
+ * FIXED: 6686: Changed `webdriver.promise.Deferred#cancel()` to silently no-op
985
+ if the deferred has already been resolved.
986
+
987
+ ## v2.38.0
988
+
989
+ * When a promise is rejected, always annotate the stacktrace with the parent
990
+ flow state so users can identify the source of an error.
991
+ * Updated tests to reflect features not working correctly in the SafariDriver
992
+ (cookie management and proxy support; see issues 5051, 5212, and 5503)
993
+ * FIXED: 6284: For mouse moves, correctly omit the x/y offsets if not
994
+ specified as a function argument (instead of passing (0,0)).
995
+ * FIXED: 6471: Updated documentation on `webdriver.WebElement#getAttribute`
996
+ * FIXED: 6612: On Unix, use the default IANA ephemeral port range if unable to
997
+ retrieve the current system's port range.
998
+ * FIXED: 6617: Avoid triggering the node debugger when initializing the
999
+ stacktrace module.
1000
+ * FIXED: 6627: Safely rebuild chrome.Options from a partial JSON spec.
1001
+
1002
+ ## v2.37.0
1003
+
1004
+ * FIXED: 6346: The remote.SeleniumServer class now accepts JVM arguments using
1005
+ the `jvmArgs` option.
1006
+
1007
+ ## v2.36.0
1008
+
1009
+ * _Release skipped to stay in sync with main Selenium project._
1010
+
1011
+ ## v2.35.2
1012
+
1013
+ * FIXED: 6200: Pass arguments to the Selenium server instead of to the JVM.
1014
+
1015
+ ## v2.35.1
1016
+
1017
+ * FIXED: 6090: Changed example scripts to use chromedriver.
1018
+
1019
+ ## v2.35.0
1020
+
1021
+ * Version bump to stay in sync with the Selenium project.
1022
+
1023
+ ## v2.34.1
1024
+
1025
+ * FIXED: 6079: The parent process should not wait for spawn driver service
1026
+ processes (chromedriver, phantomjs, etc.)
1027
+
1028
+ ## v2.34.0
1029
+
1030
+ * Added the `selenium-webdriver/testing/assert` module. This module
1031
+ simplifies writing assertions against promised values (see
1032
+ example in module documentation).
1033
+ * Added the `webdriver.Capabilities` class.
1034
+ * Added native support for the ChromeDriver. When using the `Builder`,
1035
+ requesting chrome without specifying a remote server URL will default to
1036
+ the native ChromeDriver implementation. The
1037
+ [ChromeDriver server](https://code.google.com/p/chromedriver/downloads/list)
1038
+ must be downloaded separately.
1039
+
1040
+ // Will start ChromeDriver locally.
1041
+ var driver = new webdriver.Builder().
1042
+ withCapabilities(webdriver.Capabilities.chrome()).
1043
+ build();
1044
+
1045
+ // Will start ChromeDriver using the remote server.
1046
+ var driver = new webdriver.Builder().
1047
+ withCapabilities(webdriver.Capabilities.chrome()).
1048
+ usingServer('http://server:1234/wd/hub').
1049
+ build();
1050
+
1051
+ * Added support for configuring proxies through the builder. For examples, see
1052
+ `selenium-webdriver/test/proxy_test`.
1053
+ * Added native support for PhantomJS.
1054
+ * Changed signature of `SeleniumServer` to `SeleniumServer(jar, options)`.
1055
+ * Tests are now included in the npm published package. See `README.md` for
1056
+ execution instructions
1057
+ * Removed the deprecated `webdriver.Deferred#resolve` and
1058
+ `webdriver.promise.resolved` functions.
1059
+ * Removed the ability to connect to an existing session from the Builder. This
1060
+ feature is intended for use with the browser-based client.
1061
+
1062
+ ## v2.33.0
1063
+
1064
+ * Added support for WebDriver's logging API
1065
+ * FIXED: 5511: Added webdriver.manage().timeouts().pageLoadTimeout(ms)
1066
+
1067
+ ## v2.32.1
1068
+
1069
+ * FIXED: 5541: Added missing return statement for windows in
1070
+ `portprober.findFreePort()`
1071
+
1072
+ ## v2.32.0
1073
+
1074
+ * Added the `selenium-webdriver/testing` package, which provides a basic
1075
+ framework for writing tests using Mocha. See
1076
+ `selenium-webdriver/example/google_search_test.js` for usage.
1077
+ * For Promises/A+ compatibility, backing out the change in 2.30.0 that ensured
1078
+ rejections were always Error objects. Rejection reasons are now left as is.
1079
+ * Removed deprecated functions originally scheduled for removal in 2.31.0
1080
+ * promise.Application.getInstance()
1081
+ * promise.ControlFlow#schedule()
1082
+ * promise.ControlFlow#scheduleTimeout()
1083
+ * promise.ControlFlow#scheduleWait()
1084
+ * Renamed some functions for consistency with Promises/A+ terminology. The
1085
+ original functions have been deprecated and will be removed in 2.34.0:
1086
+ * promise.resolved() -> promise.fulfilled()
1087
+ * promise.Deferred#resolve() -> promise.Deferred#fulfill()
1088
+ * FIXED: remote.SeleniumServer#stop now shuts down within the active control
1089
+ flow, allowing scripts to finish. Use #kill to shutdown immediately.
1090
+ * FIXED: 5321: cookie deletion commands
1091
+
1092
+ ## v2.31.0
1093
+
1094
+ * Added an example script.
1095
+ * Added a class for controlling the standalone Selenium server (server
1096
+ available separately)
1097
+ * Added a portprober for finding free ports
1098
+ * FIXED: WebElements now belong to the same flow as their parent driver.
1099
+
1100
+ ## v2.30.0
1101
+
1102
+ * Ensures promise rejections are always Error values.
1103
+ * Version bump to keep in sync with the Selenium project.
1104
+
1105
+ ## v2.29.1
1106
+
1107
+ * Fixed a bug that could lead to an infinite loop.
1108
+ * Added a README.md
1109
+
1110
+ ## v2.29.0
1111
+
1112
+ * Initial release for npm:
1113
+
1114
+ npm install selenium-webdriver