hotstaq 0.5.24

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 (299) hide show
  1. package/.eslintignore +17 -0
  2. package/.eslintrc.js +11 -0
  3. package/.vscode/launch.json +199 -0
  4. package/.vscode/settings.json +2 -0
  5. package/.vscode/tasks.json +78 -0
  6. package/CONTRIBUTING.md +157 -0
  7. package/README.md +126 -0
  8. package/bin/hotstaq +3 -0
  9. package/bin/hotstaq.cmd +1 -0
  10. package/build/src/Hot.d.ts +167 -0
  11. package/build/src/Hot.d.ts.map +1 -0
  12. package/build/src/Hot.js +365 -0
  13. package/build/src/Hot.js.map +1 -0
  14. package/build/src/HotAPI.d.ts +130 -0
  15. package/build/src/HotAPI.d.ts.map +1 -0
  16. package/build/src/HotAPI.js +353 -0
  17. package/build/src/HotAPI.js.map +1 -0
  18. package/build/src/HotAgentAPI.d.ts +22 -0
  19. package/build/src/HotAgentAPI.d.ts.map +1 -0
  20. package/build/src/HotAgentAPI.js +85 -0
  21. package/build/src/HotAgentAPI.js.map +1 -0
  22. package/build/src/HotAgentRoute.d.ts +17 -0
  23. package/build/src/HotAgentRoute.d.ts.map +1 -0
  24. package/build/src/HotAgentRoute.js +109 -0
  25. package/build/src/HotAgentRoute.js.map +1 -0
  26. package/build/src/HotBuilder.d.ts +52 -0
  27. package/build/src/HotBuilder.d.ts.map +1 -0
  28. package/build/src/HotBuilder.js +239 -0
  29. package/build/src/HotBuilder.js.map +1 -0
  30. package/build/src/HotClient.d.ts +31 -0
  31. package/build/src/HotClient.d.ts.map +1 -0
  32. package/build/src/HotClient.js +19 -0
  33. package/build/src/HotClient.js.map +1 -0
  34. package/build/src/HotComponent.d.ts +118 -0
  35. package/build/src/HotComponent.d.ts.map +1 -0
  36. package/build/src/HotComponent.js +89 -0
  37. package/build/src/HotComponent.js.map +1 -0
  38. package/build/src/HotCreator.d.ts +92 -0
  39. package/build/src/HotCreator.d.ts.map +1 -0
  40. package/build/src/HotCreator.js +465 -0
  41. package/build/src/HotCreator.js.map +1 -0
  42. package/build/src/HotDB.d.ts +69 -0
  43. package/build/src/HotDB.d.ts.map +1 -0
  44. package/build/src/HotDB.js +29 -0
  45. package/build/src/HotDB.js.map +1 -0
  46. package/build/src/HotDBConnectionInterface.d.ts +40 -0
  47. package/build/src/HotDBConnectionInterface.d.ts.map +1 -0
  48. package/build/src/HotDBConnectionInterface.js +3 -0
  49. package/build/src/HotDBConnectionInterface.js.map +1 -0
  50. package/build/src/HotFile.d.ts +134 -0
  51. package/build/src/HotFile.d.ts.map +1 -0
  52. package/build/src/HotFile.js +454 -0
  53. package/build/src/HotFile.js.map +1 -0
  54. package/build/src/HotHTTPServer.d.ts +162 -0
  55. package/build/src/HotHTTPServer.d.ts.map +1 -0
  56. package/build/src/HotHTTPServer.js +863 -0
  57. package/build/src/HotHTTPServer.js.map +1 -0
  58. package/build/src/HotIO.d.ts +39 -0
  59. package/build/src/HotIO.d.ts.map +1 -0
  60. package/build/src/HotIO.js +195 -0
  61. package/build/src/HotIO.js.map +1 -0
  62. package/build/src/HotLog.d.ts +60 -0
  63. package/build/src/HotLog.d.ts.map +1 -0
  64. package/build/src/HotLog.js +126 -0
  65. package/build/src/HotLog.js.map +1 -0
  66. package/build/src/HotPage.d.ts +125 -0
  67. package/build/src/HotPage.d.ts.map +1 -0
  68. package/build/src/HotPage.js +178 -0
  69. package/build/src/HotPage.js.map +1 -0
  70. package/build/src/HotRoute.d.ts +82 -0
  71. package/build/src/HotRoute.d.ts.map +1 -0
  72. package/build/src/HotRoute.js +83 -0
  73. package/build/src/HotRoute.js.map +1 -0
  74. package/build/src/HotRouteMethod.d.ts +129 -0
  75. package/build/src/HotRouteMethod.d.ts.map +1 -0
  76. package/build/src/HotRouteMethod.js +84 -0
  77. package/build/src/HotRouteMethod.js.map +1 -0
  78. package/build/src/HotServer.d.ts +152 -0
  79. package/build/src/HotServer.d.ts.map +1 -0
  80. package/build/src/HotServer.js +109 -0
  81. package/build/src/HotServer.js.map +1 -0
  82. package/build/src/HotSetAsWeb.d.ts +2 -0
  83. package/build/src/HotSetAsWeb.d.ts.map +1 -0
  84. package/build/src/HotSetAsWeb.js +5 -0
  85. package/build/src/HotSetAsWeb.js.map +1 -0
  86. package/build/src/HotStaq.d.ts +601 -0
  87. package/build/src/HotStaq.d.ts.map +1 -0
  88. package/build/src/HotStaq.js +1258 -0
  89. package/build/src/HotStaq.js.map +1 -0
  90. package/build/src/HotStaqWeb.d.ts +18 -0
  91. package/build/src/HotStaqWeb.d.ts.map +1 -0
  92. package/build/src/HotStaqWeb.js +44 -0
  93. package/build/src/HotStaqWeb.js.map +1 -0
  94. package/build/src/HotTestDriver.d.ts +63 -0
  95. package/build/src/HotTestDriver.d.ts.map +1 -0
  96. package/build/src/HotTestDriver.js +187 -0
  97. package/build/src/HotTestDriver.js.map +1 -0
  98. package/build/src/HotTestElement.d.ts +71 -0
  99. package/build/src/HotTestElement.d.ts.map +1 -0
  100. package/build/src/HotTestElement.js +37 -0
  101. package/build/src/HotTestElement.js.map +1 -0
  102. package/build/src/HotTestMap.d.ts +83 -0
  103. package/build/src/HotTestMap.d.ts.map +1 -0
  104. package/build/src/HotTestMap.js +58 -0
  105. package/build/src/HotTestMap.js.map +1 -0
  106. package/build/src/HotTestSeleniumDriver.d.ts +82 -0
  107. package/build/src/HotTestSeleniumDriver.d.ts.map +1 -0
  108. package/build/src/HotTestSeleniumDriver.js +398 -0
  109. package/build/src/HotTestSeleniumDriver.js.map +1 -0
  110. package/build/src/HotTester.d.ts +188 -0
  111. package/build/src/HotTester.d.ts.map +1 -0
  112. package/build/src/HotTester.js +623 -0
  113. package/build/src/HotTester.js.map +1 -0
  114. package/build/src/HotTesterAPI.d.ts +15 -0
  115. package/build/src/HotTesterAPI.d.ts.map +1 -0
  116. package/build/src/HotTesterAPI.js +161 -0
  117. package/build/src/HotTesterAPI.js.map +1 -0
  118. package/build/src/HotTesterMocha.d.ts +50 -0
  119. package/build/src/HotTesterMocha.d.ts.map +1 -0
  120. package/build/src/HotTesterMocha.js +205 -0
  121. package/build/src/HotTesterMocha.js.map +1 -0
  122. package/build/src/HotTesterMochaSelenium.d.ts +70 -0
  123. package/build/src/HotTesterMochaSelenium.d.ts.map +1 -0
  124. package/build/src/HotTesterMochaSelenium.js +257 -0
  125. package/build/src/HotTesterMochaSelenium.js.map +1 -0
  126. package/build/src/HotTesterServer.d.ts +114 -0
  127. package/build/src/HotTesterServer.d.ts.map +1 -0
  128. package/build/src/HotTesterServer.js +575 -0
  129. package/build/src/HotTesterServer.js.map +1 -0
  130. package/build/src/api.d.ts +33 -0
  131. package/build/src/api.d.ts.map +1 -0
  132. package/build/src/api.js +78 -0
  133. package/build/src/api.js.map +1 -0
  134. package/build/src/cli.d.ts +2 -0
  135. package/build/src/cli.d.ts.map +1 -0
  136. package/build/src/cli.js +935 -0
  137. package/build/src/cli.js.map +1 -0
  138. package/build/src/schemas/HotDBInflux.d.ts +63 -0
  139. package/build/src/schemas/HotDBInflux.d.ts.map +1 -0
  140. package/build/src/schemas/HotDBInflux.js +239 -0
  141. package/build/src/schemas/HotDBInflux.js.map +1 -0
  142. package/build/src/schemas/HotDBMigration.d.ts +19 -0
  143. package/build/src/schemas/HotDBMigration.d.ts.map +1 -0
  144. package/build/src/schemas/HotDBMigration.js +15 -0
  145. package/build/src/schemas/HotDBMigration.js.map +1 -0
  146. package/build/src/schemas/HotDBMySQL.d.ts +65 -0
  147. package/build/src/schemas/HotDBMySQL.d.ts.map +1 -0
  148. package/build/src/schemas/HotDBMySQL.js +387 -0
  149. package/build/src/schemas/HotDBMySQL.js.map +1 -0
  150. package/build/src/schemas/HotDBSchema.d.ts +15 -0
  151. package/build/src/schemas/HotDBSchema.d.ts.map +1 -0
  152. package/build/src/schemas/HotDBSchema.js +19 -0
  153. package/build/src/schemas/HotDBSchema.js.map +1 -0
  154. package/build/src/schemas/influx/InfluxSchema.d.ts +14 -0
  155. package/build/src/schemas/influx/InfluxSchema.d.ts.map +1 -0
  156. package/build/src/schemas/influx/InfluxSchema.js +33 -0
  157. package/build/src/schemas/influx/InfluxSchema.js.map +1 -0
  158. package/build/src/schemas/mysql/MySQLSchema.d.ts +39 -0
  159. package/build/src/schemas/mysql/MySQLSchema.d.ts.map +1 -0
  160. package/build/src/schemas/mysql/MySQLSchema.js +151 -0
  161. package/build/src/schemas/mysql/MySQLSchema.js.map +1 -0
  162. package/build/src/schemas/mysql/MySQLSchemaField.d.ts +168 -0
  163. package/build/src/schemas/mysql/MySQLSchemaField.d.ts.map +1 -0
  164. package/build/src/schemas/mysql/MySQLSchemaField.js +260 -0
  165. package/build/src/schemas/mysql/MySQLSchemaField.js.map +1 -0
  166. package/build/src/schemas/mysql/MySQLSchemaTable.d.ts +49 -0
  167. package/build/src/schemas/mysql/MySQLSchemaTable.d.ts.map +1 -0
  168. package/build/src/schemas/mysql/MySQLSchemaTable.js +310 -0
  169. package/build/src/schemas/mysql/MySQLSchemaTable.js.map +1 -0
  170. package/build-web/HotStaq.js +2 -0
  171. package/build-web/HotStaq.min.js +125 -0
  172. package/builder/docker/Dockerfile.linux.gen +42 -0
  173. package/builder/docker/README.md +36 -0
  174. package/builder/docker/app/start.sh +8 -0
  175. package/builder/docker/dockerignore +3 -0
  176. package/builder/docker/scripts/build.bat +11 -0
  177. package/builder/docker/scripts/build.sh +11 -0
  178. package/builder/docker/scripts/start-app.bat +7 -0
  179. package/builder/docker/scripts/start-app.sh +7 -0
  180. package/builder/docker/scripts/stop-app.bat +5 -0
  181. package/builder/docker/scripts/stop-app.sh +5 -0
  182. package/builder/docker-compose/docker-compose.gen.yaml +41 -0
  183. package/builder/docker-compose/env-skeleton +4 -0
  184. package/creator/project/.vscode/launch.json +59 -0
  185. package/creator/project/README.md +20 -0
  186. package/creator/project/gitignore +118 -0
  187. package/creator/project/npmignore +118 -0
  188. package/creator/public/api-test.hott +28 -0
  189. package/creator/public/index.hott +12 -0
  190. package/creator/ts/src/AppAPI.ts +30 -0
  191. package/creator/ts/src/HelloWorld.ts +39 -0
  192. package/creator/ts/src/WebExport.ts +7 -0
  193. package/creator/ts/tsconfig-web.json +73 -0
  194. package/creator/ts/tsconfig.json +73 -0
  195. package/creator/ts/webpack-api.config.js +57 -0
  196. package/dbstart.sh +19 -0
  197. package/dbstop.sh +4 -0
  198. package/docs/.nojekyll +1 -0
  199. package/docs/README.md +128 -0
  200. package/docs/classes/Hot.md +477 -0
  201. package/docs/classes/HotAPI.md +369 -0
  202. package/docs/classes/HotClient.md +95 -0
  203. package/docs/classes/HotComponent.md +279 -0
  204. package/docs/classes/HotDB.md +247 -0
  205. package/docs/classes/HotDBInflux.md +404 -0
  206. package/docs/classes/HotDBMigration.md +80 -0
  207. package/docs/classes/HotDBMySQL.md +310 -0
  208. package/docs/classes/HotDBSchema.md +51 -0
  209. package/docs/classes/HotFile.md +353 -0
  210. package/docs/classes/HotHTTPServer.md +700 -0
  211. package/docs/classes/HotLog.md +162 -0
  212. package/docs/classes/HotPage.md +357 -0
  213. package/docs/classes/HotRoute.md +312 -0
  214. package/docs/classes/HotRouteMethod.md +271 -0
  215. package/docs/classes/HotServer.md +311 -0
  216. package/docs/classes/HotStaq.md +1153 -0
  217. package/docs/classes/HotTestDestination.md +58 -0
  218. package/docs/classes/HotTestDriver.md +332 -0
  219. package/docs/classes/HotTestElement.md +88 -0
  220. package/docs/classes/HotTestElementOptions.md +71 -0
  221. package/docs/classes/HotTestMap.md +92 -0
  222. package/docs/classes/HotTestSeleniumDriver.md +529 -0
  223. package/docs/classes/HotTester.md +653 -0
  224. package/docs/classes/HotTesterAPI.md +493 -0
  225. package/docs/classes/HotTesterMocha.md +843 -0
  226. package/docs/classes/HotTesterMochaSelenium.md +896 -0
  227. package/docs/classes/HotTesterServer.md +633 -0
  228. package/docs/classes/InfluxSchema.md +74 -0
  229. package/docs/classes/MySQLSchema.md +199 -0
  230. package/docs/classes/MySQLSchemaField.md +330 -0
  231. package/docs/classes/MySQLSchemaTable.md +176 -0
  232. package/docs/enums/ConnectionStatus.md +43 -0
  233. package/docs/enums/DeveloperMode.md +38 -0
  234. package/docs/enums/EventExecutionType.md +43 -0
  235. package/docs/enums/HTTPMethod.md +32 -0
  236. package/docs/enums/HotDBGenerationType.md +30 -0
  237. package/docs/enums/HotLogLevel.md +88 -0
  238. package/docs/interfaces/HotDBConnectionInterface.md +116 -0
  239. package/docs/interfaces/HotDestination.md +62 -0
  240. package/docs/interfaces/HotSite.md +187 -0
  241. package/docs/interfaces/HotSiteMapPath.md +37 -0
  242. package/docs/interfaces/HotSiteRoute.md +79 -0
  243. package/docs/interfaces/HotStartOptions.md +115 -0
  244. package/docs/interfaces/HotTestPage.md +44 -0
  245. package/docs/interfaces/HotTestStop.md +62 -0
  246. package/docs/interfaces/IHotComponent.md +135 -0
  247. package/docs/interfaces/IHotStaq.md +118 -0
  248. package/docs/interfaces/IHotTestElement.md +54 -0
  249. package/docs/interfaces/IHotTestElementOptions.md +43 -0
  250. package/docs/interfaces/MySQLResults.md +43 -0
  251. package/docs/interfaces/MySQLSchemaFieldResult.md +75 -0
  252. package/docs/modules.md +162 -0
  253. package/package.json +65 -0
  254. package/selenium-start.sh +7 -0
  255. package/selenium-stop.sh +3 -0
  256. package/src/Hot.ts +319 -0
  257. package/src/HotAPI.ts +378 -0
  258. package/src/HotAgentAPI.ts +43 -0
  259. package/src/HotAgentRoute.ts +44 -0
  260. package/src/HotBuilder.ts +221 -0
  261. package/src/HotClient.ts +40 -0
  262. package/src/HotComponent.ts +158 -0
  263. package/src/HotCreator.ts +482 -0
  264. package/src/HotDB.ts +79 -0
  265. package/src/HotDBConnectionInterface.ts +40 -0
  266. package/src/HotFile.ts +617 -0
  267. package/src/HotHTTPServer.ts +954 -0
  268. package/src/HotIO.ts +128 -0
  269. package/src/HotLog.ts +158 -0
  270. package/src/HotPage.ts +206 -0
  271. package/src/HotRoute.ts +137 -0
  272. package/src/HotRouteMethod.ts +216 -0
  273. package/src/HotServer.ts +211 -0
  274. package/src/HotSetAsWeb.ts +3 -0
  275. package/src/HotStaq.ts +1877 -0
  276. package/src/HotStaqWeb.ts +59 -0
  277. package/src/HotTestDriver.ts +172 -0
  278. package/src/HotTestElement.ts +97 -0
  279. package/src/HotTestMap.ts +130 -0
  280. package/src/HotTestSeleniumDriver.ts +374 -0
  281. package/src/HotTester.ts +697 -0
  282. package/src/HotTesterAPI.ts +126 -0
  283. package/src/HotTesterMocha.ts +133 -0
  284. package/src/HotTesterMochaSelenium.ts +189 -0
  285. package/src/HotTesterServer.ts +551 -0
  286. package/src/api.ts +102 -0
  287. package/src/cli.ts +1147 -0
  288. package/src/schemas/HotDBInflux.ts +211 -0
  289. package/src/schemas/HotDBMigration.ts +24 -0
  290. package/src/schemas/HotDBMySQL.ts +312 -0
  291. package/src/schemas/HotDBSchema.ts +21 -0
  292. package/src/schemas/influx/InfluxSchema.ts +19 -0
  293. package/src/schemas/mysql/MySQLSchema.ts +90 -0
  294. package/src/schemas/mysql/MySQLSchemaField.ts +408 -0
  295. package/src/schemas/mysql/MySQLSchemaTable.ts +353 -0
  296. package/tsconfig-web.json +74 -0
  297. package/tsconfig.json +73 -0
  298. package/webpack.config.js +51 -0
  299. package/webpack.config.tests.js +56 -0
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HotTestMap = exports.HotTestDestination = void 0;
4
+ /**
5
+ * The destination to take in a map.
6
+ */
7
+ var HotTestDestination = /** @class */ (function () {
8
+ function HotTestDestination(destination, autoStart) {
9
+ if (destination === void 0) { destination = ""; }
10
+ if (autoStart === void 0) { autoStart = true; }
11
+ if (typeof (destination) === "string") {
12
+ this.destination = destination;
13
+ this.autoStart = autoStart;
14
+ }
15
+ else {
16
+ if (destination instanceof HotTestDestination) {
17
+ this.destination = destination.destination;
18
+ this.autoStart = destination.autoStart;
19
+ }
20
+ else {
21
+ this.destination = destination.path;
22
+ this.autoStart = destination.autoStart;
23
+ }
24
+ }
25
+ }
26
+ return HotTestDestination;
27
+ }());
28
+ exports.HotTestDestination = HotTestDestination;
29
+ /**
30
+ * Maps the paths that are taken to complete a test.
31
+ */
32
+ var HotTestMap = /** @class */ (function () {
33
+ function HotTestMap(destinations, pages, destinationOrder) {
34
+ if (destinations === void 0) { destinations = []; }
35
+ if (pages === void 0) { pages = {}; }
36
+ if (destinationOrder === void 0) { destinationOrder = []; }
37
+ // Go through and convert any strings into HotTestDestinations.
38
+ if (destinations instanceof Array) {
39
+ this.destinations = [];
40
+ for (var iIdx = 0; iIdx < destinations.length; iIdx++) {
41
+ var dest = destinations[iIdx];
42
+ this.destinations.push(new HotTestDestination(dest));
43
+ }
44
+ }
45
+ else {
46
+ this.destinations = {};
47
+ for (var key in destinations) {
48
+ var dest = destinations[key];
49
+ this.destinations[key] = new HotTestDestination(dest);
50
+ }
51
+ }
52
+ this.destinationOrder = destinationOrder;
53
+ this.pages = pages;
54
+ }
55
+ return HotTestMap;
56
+ }());
57
+ exports.HotTestMap = HotTestMap;
58
+ //# sourceMappingURL=HotTestMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HotTestMap.js","sourceRoot":"","sources":["../../src/HotTestMap.ts"],"names":[],"mappings":";;;AASA;;GAEG;AACH;IAYC,4BAAa,WAA8D,EAAE,SAAyB;QAAzF,4BAAA,EAAA,gBAA8D;QAAE,0BAAA,EAAA,gBAAyB;QAErG,IAAI,OAAO,CAAC,WAAW,CAAC,KAAK,QAAQ,EACrC;YACC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;YAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;SAC3B;aAED;YACC,IAAI,WAAW,YAAY,kBAAkB,EAC7C;gBACC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;gBAC3C,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;aACvC;iBAED;gBACC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC;gBACpC,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;aACvC;SACD;IACF,CAAC;IACF,yBAAC;AAAD,CAAC,AAjCD,IAiCC;AAjCY,gDAAkB;AAkD/B;;GAEG;AACH;IAkCC,oBAAa,YAAqG,EACjH,KAA2C,EAAE,gBAA+B;QADhE,6BAAA,EAAA,iBAAqG;QACjH,sBAAA,EAAA,UAA2C;QAAE,iCAAA,EAAA,qBAA+B;QAE5E,+DAA+D;QAC/D,IAAI,YAAY,YAAY,KAAK,EACjC;YACC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YAEvB,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,EACrD;gBACC,IAAI,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;gBAE9B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAE,IAAI,kBAAkB,CAAE,IAAI,CAAC,CAAC,CAAC;aACvD;SACD;aAED;YACC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YAEvB,KAAK,IAAI,GAAG,IAAI,YAAY,EAC5B;gBACC,IAAI,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;gBAE7B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,kBAAkB,CAAE,IAAI,CAAC,CAAC;aACvD;SACD;QAED,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACpB,CAAC;IACF,iBAAC;AAAD,CAAC,AAhED,IAgEC;AAhEY,gCAAU"}
@@ -0,0 +1,82 @@
1
+ import { HotTestElement, HotTestElementOptions } from "./HotTestElement";
2
+ import { HotTestDriver } from "./HotTestDriver";
3
+ import { HotTestPage } from "./HotTestMap";
4
+ import { By, WebDriver, WebElement, Session } from "selenium-webdriver";
5
+ /**
6
+ * Runs and executes tests using Selenium.
7
+ */
8
+ export declare class HotTestSeleniumDriver extends HotTestDriver {
9
+ /**
10
+ * The current selenium session running.
11
+ */
12
+ session: Session;
13
+ /**
14
+ * The selenium webdriver.
15
+ */
16
+ driver: WebDriver;
17
+ /**
18
+ * The browser to use.
19
+ */
20
+ browser: string;
21
+ /**
22
+ * Run the tests headless.
23
+ */
24
+ headless: boolean;
25
+ /**
26
+ * Automatically open the developer tools on start.
27
+ */
28
+ openDevTools: boolean;
29
+ /**
30
+ * Set the remote server to use for testing.
31
+ */
32
+ remoteServer: string;
33
+ /**
34
+ * Set the window size on start.
35
+ */
36
+ windowSize: {
37
+ /**
38
+ * The width of the window.
39
+ */
40
+ width: number;
41
+ /**
42
+ * The height of the window.
43
+ */
44
+ height: number;
45
+ };
46
+ constructor(page?: HotTestPage);
47
+ /**
48
+ * Disconnect this server or destroy anything associated with this HotTestDriver.
49
+ */
50
+ destroy(): Promise<void>;
51
+ /**
52
+ * Load the selenium driver.
53
+ */
54
+ loadSeleniumDriver(): Promise<void>;
55
+ /**
56
+ * Get a test object by it's name. If a * is used, it will be used as a
57
+ * wildcard for the object's name. If a > is used, then the name will
58
+ * be treated as a CSS selector.
59
+ */
60
+ getTestObjectByName(name: string): By;
61
+ /**
62
+ * Navigate to a url.
63
+ */
64
+ navigateToUrl(url: string): Promise<void>;
65
+ /**
66
+ * Wait for a test element using Selenium Webdriver.
67
+ */
68
+ waitForTestElement(name: string | HotTestElement, options?: HotTestElementOptions): Promise<WebElement>;
69
+ /**
70
+ * Get a test element using selenium webdriver.
71
+ */
72
+ findTestElement(name: string | HotTestElement, options?: HotTestElementOptions): Promise<WebElement>;
73
+ /**
74
+ * Run a command using Selenium Webdriver.
75
+ */
76
+ runCommand(testElm: string | HotTestElement, funcName?: string, valueStr?: string, options?: HotTestElementOptions): Promise<any>;
77
+ /**
78
+ * An expression to test.
79
+ */
80
+ assertElementValue(name: string | HotTestElement, value: any, errorMessage?: string, options?: HotTestElementOptions): Promise<any>;
81
+ }
82
+ //# sourceMappingURL=HotTestSeleniumDriver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HotTestSeleniumDriver.d.ts","sourceRoot":"","sources":["../../src/HotTestSeleniumDriver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,EAAE,EAAS,SAAS,EAAE,UAAU,EAAE,OAAO,EAAW,MAAM,oBAAoB,CAAC;AAIxF;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,aAAa;IAEvD;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,MAAM,EAAE,SAAS,CAAC;IAClB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,YAAY,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,UAAU,EAAE;QACV;;WAEG;QACH,KAAK,EAAE,MAAM,CAAC;QACd;;WAEG;QACH,MAAM,EAAE,MAAM,CAAC;KACf,CAAC;gBAEU,IAAI,GAAE,WAAkB;IAarC;;OAEG;IACG,OAAO,IAAK,OAAO,CAAC,IAAI,CAAC;IAW/B;;OAEG;IACG,kBAAkB,IAAK,OAAO,CAAC,IAAI,CAAC;IAkF1C;;;;OAIG;IACH,mBAAmB,CAAE,IAAI,EAAE,MAAM,GAAG,EAAE;IAOtC;;OAEG;IACG,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/C;;OAEG;IACG,kBAAkB,CAAE,IAAI,EAAE,MAAM,GAAG,cAAc,EACtD,OAAO,GAAE,qBAAoD,GAAG,OAAO,CAAC,UAAU,CAAC;IAiCpF;;OAEG;IACG,eAAe,CAAE,IAAI,EAAE,MAAM,GAAG,cAAc,EACnD,OAAO,GAAE,qBAAoD,GAAG,OAAO,CAAC,UAAU,CAAC;IAsCpF;;OAEG;IACG,UAAU,CAAE,OAAO,EAAE,MAAM,GAAG,cAAc,EAAE,QAAQ,GAAE,MAAW,EACvE,QAAQ,GAAE,MAAW,EACrB,OAAO,GAAE,qBAAoD,GAAG,OAAO,CAAC,GAAG,CAAC;IAkD9E;;OAEG;IACG,kBAAkB,CAAE,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE,KAAK,EAAE,GAAG,EAClE,YAAY,GAAE,MAAW,EACzB,OAAO,GAAE,qBAAoD,GAAG,OAAO,CAAC,GAAG,CAAC;CAiD7E"}
@@ -0,0 +1,398 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
+ return new (P || (P = Promise))(function (resolve, reject) {
20
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ });
25
+ };
26
+ var __generator = (this && this.__generator) || function (thisArg, body) {
27
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
+ function verb(n) { return function (v) { return step([n, v]); }; }
30
+ function step(op) {
31
+ if (f) throw new TypeError("Generator is already executing.");
32
+ while (_) try {
33
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
+ if (y = 0, t) op = [op[0] & 2, t.value];
35
+ switch (op[0]) {
36
+ case 0: case 1: t = op; break;
37
+ case 4: _.label++; return { value: op[1], done: false };
38
+ case 5: _.label++; y = op[1]; op = [0]; continue;
39
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
+ default:
41
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
+ if (t[2]) _.ops.pop();
46
+ _.trys.pop(); continue;
47
+ }
48
+ op = body.call(thisArg, _);
49
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
+ }
52
+ };
53
+ var __importDefault = (this && this.__importDefault) || function (mod) {
54
+ return (mod && mod.__esModule) ? mod : { "default": mod };
55
+ };
56
+ Object.defineProperty(exports, "__esModule", { value: true });
57
+ exports.HotTestSeleniumDriver = void 0;
58
+ var HotTestElement_1 = require("./HotTestElement");
59
+ var HotTestDriver_1 = require("./HotTestDriver");
60
+ var selenium_webdriver_1 = require("selenium-webdriver");
61
+ var chrome_1 = __importDefault(require("selenium-webdriver/chrome"));
62
+ var firefox_1 = __importDefault(require("selenium-webdriver/firefox"));
63
+ /**
64
+ * Runs and executes tests using Selenium.
65
+ */
66
+ var HotTestSeleniumDriver = /** @class */ (function (_super) {
67
+ __extends(HotTestSeleniumDriver, _super);
68
+ function HotTestSeleniumDriver(page) {
69
+ if (page === void 0) { page = null; }
70
+ var _this = _super.call(this, page) || this;
71
+ _this.driver = null;
72
+ _this.session = null;
73
+ _this.browser = "chrome";
74
+ _this.headless = false;
75
+ _this.openDevTools = false;
76
+ _this.remoteServer = "";
77
+ _this.windowSize = null;
78
+ return _this;
79
+ }
80
+ /**
81
+ * Disconnect this server or destroy anything associated with this HotTestDriver.
82
+ */
83
+ HotTestSeleniumDriver.prototype.destroy = function () {
84
+ return __awaiter(this, void 0, void 0, function () {
85
+ return __generator(this, function (_a) {
86
+ switch (_a.label) {
87
+ case 0:
88
+ if (!(this.driver != null)) return [3 /*break*/, 2];
89
+ return [4 /*yield*/, this.driver.quit()];
90
+ case 1:
91
+ _a.sent();
92
+ this.driver = null;
93
+ this.session = null;
94
+ _a.label = 2;
95
+ case 2: return [2 /*return*/];
96
+ }
97
+ });
98
+ });
99
+ };
100
+ /**
101
+ * Load the selenium driver.
102
+ */
103
+ HotTestSeleniumDriver.prototype.loadSeleniumDriver = function () {
104
+ return __awaiter(this, void 0, void 0, function () {
105
+ var createWindowSize, builder, options, options, _a, _b;
106
+ var _this = this;
107
+ return __generator(this, function (_c) {
108
+ switch (_c.label) {
109
+ case 0:
110
+ createWindowSize = function () {
111
+ if (_this.windowSize == null)
112
+ _this.windowSize = { width: 1920, height: 1080 };
113
+ };
114
+ builder = new selenium_webdriver_1.Builder();
115
+ builder = builder.forBrowser(this.browser);
116
+ if (process.env["SELENIUM_REMOTE_SERVER"] != null)
117
+ this.remoteServer = process.env["SELENIUM_REMOTE_SERVER"];
118
+ if (process.env["SELENIUM_WINDOW_WIDTH"] != null) {
119
+ createWindowSize();
120
+ this.windowSize.width = parseFloat(process.env["SELENIUM_WINDOW_WIDTH"]);
121
+ }
122
+ if (process.env["SELENIUM_WINDOW_HEIGHT"] != null) {
123
+ createWindowSize();
124
+ this.windowSize.height = parseFloat(process.env["SELENIUM_WINDOW_HEIGHT"]);
125
+ }
126
+ if (this.remoteServer !== "") {
127
+ builder = builder.usingServer(this.remoteServer);
128
+ createWindowSize();
129
+ this.headless = true;
130
+ }
131
+ if (this.browser === "firefox") {
132
+ options = new firefox_1.default.Options();
133
+ if (this.openDevTools === true)
134
+ options = options.addArguments("-devtools");
135
+ if (this.headless === true)
136
+ options = options.headless();
137
+ if (this.windowSize != null)
138
+ options = options.windowSize(this.windowSize);
139
+ if (process.env.NODE_TLS_REJECT_UNAUTHORIZED != null) {
140
+ if (process.env.NODE_TLS_REJECT_UNAUTHORIZED == "0")
141
+ options.setAcceptInsecureCerts(true);
142
+ }
143
+ builder = builder.setFirefoxOptions(options);
144
+ }
145
+ if (this.browser === "chrome") {
146
+ options = new chrome_1.default.Options();
147
+ options = options.addArguments("--disable-gpu", "--no-sandbox");
148
+ if (this.openDevTools === true)
149
+ options = options.addArguments("--auto-open-devtools-for-tabs");
150
+ if (this.headless === true)
151
+ options = options.headless();
152
+ if (this.windowSize != null)
153
+ options = options.windowSize(this.windowSize);
154
+ if (process.env.NODE_TLS_REJECT_UNAUTHORIZED != null) {
155
+ if (process.env.NODE_TLS_REJECT_UNAUTHORIZED == "0")
156
+ options.setAcceptInsecureCerts(true);
157
+ }
158
+ builder = builder.setChromeOptions(options);
159
+ }
160
+ _a = this;
161
+ return [4 /*yield*/, builder.build()];
162
+ case 1:
163
+ _a.driver = _c.sent();
164
+ _b = this;
165
+ return [4 /*yield*/, this.driver.getSession()];
166
+ case 2:
167
+ _b.session = _c.sent();
168
+ return [2 /*return*/];
169
+ }
170
+ });
171
+ });
172
+ };
173
+ /**
174
+ * Get a test object by it's name. If a * is used, it will be used as a
175
+ * wildcard for the object's name. If a > is used, then the name will
176
+ * be treated as a CSS selector.
177
+ */
178
+ HotTestSeleniumDriver.prototype.getTestObjectByName = function (name) {
179
+ var selector = this.parseTestObject(name);
180
+ return (selenium_webdriver_1.By.css(selector));
181
+ };
182
+ /**
183
+ * Navigate to a url.
184
+ */
185
+ HotTestSeleniumDriver.prototype.navigateToUrl = function (url) {
186
+ return __awaiter(this, void 0, void 0, function () {
187
+ return __generator(this, function (_a) {
188
+ switch (_a.label) {
189
+ case 0: return [4 /*yield*/, this.driver.get(url)];
190
+ case 1:
191
+ _a.sent();
192
+ return [2 /*return*/];
193
+ }
194
+ });
195
+ });
196
+ };
197
+ /**
198
+ * Wait for a test element using Selenium Webdriver.
199
+ */
200
+ HotTestSeleniumDriver.prototype.waitForTestElement = function (name, options) {
201
+ if (options === void 0) { options = new HotTestElement_1.HotTestElementOptions(); }
202
+ return __awaiter(this, void 0, void 0, function () {
203
+ var nameStr, foundElm, elms, iIdx, elm;
204
+ return __generator(this, function (_a) {
205
+ switch (_a.label) {
206
+ case 0:
207
+ nameStr = "";
208
+ if (typeof (name) === "string")
209
+ nameStr = name;
210
+ else
211
+ nameStr = name.name;
212
+ foundElm = null;
213
+ if (!(options.mustBeVisible === false)) return [3 /*break*/, 2];
214
+ return [4 /*yield*/, this.driver.wait(selenium_webdriver_1.until.elementLocated(this.getTestObjectByName(nameStr)))];
215
+ case 1:
216
+ foundElm = _a.sent();
217
+ return [3 /*break*/, 7];
218
+ case 2: return [4 /*yield*/, this.driver.wait(selenium_webdriver_1.until.elementsLocated(this.getTestObjectByName(nameStr)))];
219
+ case 3:
220
+ elms = _a.sent();
221
+ iIdx = 0;
222
+ _a.label = 4;
223
+ case 4:
224
+ if (!(iIdx < elms.length)) return [3 /*break*/, 7];
225
+ elm = elms[iIdx];
226
+ return [4 /*yield*/, elm.isDisplayed()];
227
+ case 5:
228
+ if ((_a.sent()) === true) {
229
+ foundElm = elm;
230
+ return [3 /*break*/, 7];
231
+ }
232
+ _a.label = 6;
233
+ case 6:
234
+ iIdx++;
235
+ return [3 /*break*/, 4];
236
+ case 7: return [2 /*return*/, (foundElm)];
237
+ }
238
+ });
239
+ });
240
+ };
241
+ /**
242
+ * Get a test element using selenium webdriver.
243
+ */
244
+ HotTestSeleniumDriver.prototype.findTestElement = function (name, options) {
245
+ if (options === void 0) { options = new HotTestElement_1.HotTestElementOptions(); }
246
+ return __awaiter(this, void 0, void 0, function () {
247
+ var nameStr, foundElm, elms, elms, iIdx, elm;
248
+ return __generator(this, function (_a) {
249
+ switch (_a.label) {
250
+ case 0:
251
+ nameStr = "";
252
+ if (typeof (name) === "string")
253
+ nameStr = name;
254
+ else
255
+ nameStr = name.name;
256
+ foundElm = null;
257
+ if (!(options.mustBeVisible === false)) return [3 /*break*/, 2];
258
+ return [4 /*yield*/, this.driver.findElements(this.getTestObjectByName(nameStr))];
259
+ case 1:
260
+ elms = _a.sent();
261
+ if (elms.length > 0)
262
+ foundElm = elms[0];
263
+ return [3 /*break*/, 7];
264
+ case 2: return [4 /*yield*/, this.driver.findElements(this.getTestObjectByName(nameStr))];
265
+ case 3:
266
+ elms = _a.sent();
267
+ iIdx = 0;
268
+ _a.label = 4;
269
+ case 4:
270
+ if (!(iIdx < elms.length)) return [3 /*break*/, 7];
271
+ elm = elms[iIdx];
272
+ return [4 /*yield*/, elm.isDisplayed()];
273
+ case 5:
274
+ if ((_a.sent()) === true) {
275
+ foundElm = elm;
276
+ return [3 /*break*/, 7];
277
+ }
278
+ _a.label = 6;
279
+ case 6:
280
+ iIdx++;
281
+ return [3 /*break*/, 4];
282
+ case 7: return [2 /*return*/, (foundElm)];
283
+ }
284
+ });
285
+ });
286
+ };
287
+ /**
288
+ * Run a command using Selenium Webdriver.
289
+ */
290
+ HotTestSeleniumDriver.prototype.runCommand = function (testElm, funcName, valueStr, options) {
291
+ if (funcName === void 0) { funcName = ""; }
292
+ if (valueStr === void 0) { valueStr = ""; }
293
+ if (options === void 0) { options = new HotTestElement_1.HotTestElementOptions(); }
294
+ return __awaiter(this, void 0, void 0, function () {
295
+ var name, func, value, elm, result;
296
+ return __generator(this, function (_a) {
297
+ switch (_a.label) {
298
+ case 0:
299
+ name = "";
300
+ func = "";
301
+ value = "";
302
+ if (typeof (testElm) !== "string") {
303
+ name = testElm.name;
304
+ func = testElm.func;
305
+ value = testElm.value;
306
+ }
307
+ else {
308
+ name = testElm;
309
+ func = funcName;
310
+ value = valueStr;
311
+ }
312
+ return [4 /*yield*/, this.findTestElement(name, options)];
313
+ case 1:
314
+ elm = _a.sent();
315
+ result = null;
316
+ if (elm == null) {
317
+ if (options.ignoreMissingElementError === true)
318
+ return [2 /*return*/, (result)];
319
+ throw new Error("HotTestSeleniumDriver: Unable to find test element ".concat(name, "!"));
320
+ }
321
+ if (!(func != null)) return [3 /*break*/, 5];
322
+ if (!(func !== "")) return [3 /*break*/, 5];
323
+ if (!(value != null)) return [3 /*break*/, 3];
324
+ return [4 /*yield*/, elm[func](value)];
325
+ case 2:
326
+ /// @ts-ignore
327
+ result = _a.sent();
328
+ return [3 /*break*/, 5];
329
+ case 3: return [4 /*yield*/, elm[func]()];
330
+ case 4:
331
+ /// @ts-ignore
332
+ result = _a.sent();
333
+ _a.label = 5;
334
+ case 5: return [2 /*return*/, (result)];
335
+ }
336
+ });
337
+ });
338
+ };
339
+ /**
340
+ * An expression to test.
341
+ */
342
+ HotTestSeleniumDriver.prototype.assertElementValue = function (name, value, errorMessage, options) {
343
+ if (errorMessage === void 0) { errorMessage = ""; }
344
+ if (options === void 0) { options = new HotTestElement_1.HotTestElementOptions(); }
345
+ return __awaiter(this, void 0, void 0, function () {
346
+ var elm, realName, elmValue, elmValue2, elmValue3, finalElmValue;
347
+ return __generator(this, function (_a) {
348
+ switch (_a.label) {
349
+ case 0: return [4 /*yield*/, this.findTestElement(name, options)];
350
+ case 1:
351
+ elm = _a.sent();
352
+ if (elm == null) {
353
+ realName = "";
354
+ if (typeof (name) === "string")
355
+ realName = name;
356
+ else
357
+ realName = name.name;
358
+ if (options.ignoreMissingElementError === true)
359
+ return [2 /*return*/];
360
+ throw new Error("Unable to find test object ".concat(realName));
361
+ }
362
+ return [4 /*yield*/, elm.getText()];
363
+ case 2:
364
+ elmValue = _a.sent();
365
+ elmValue2 = "";
366
+ elmValue3 = "";
367
+ finalElmValue = elmValue;
368
+ if (!(finalElmValue === "")) return [3 /*break*/, 4];
369
+ return [4 /*yield*/, elm.getAttribute("value")];
370
+ case 3:
371
+ elmValue2 = _a.sent();
372
+ if (elmValue2 != null) {
373
+ if (elmValue2 !== "")
374
+ finalElmValue = elmValue2;
375
+ }
376
+ _a.label = 4;
377
+ case 4:
378
+ if (!(finalElmValue === "")) return [3 /*break*/, 6];
379
+ return [4 /*yield*/, elm.getAttribute("innerHTML")];
380
+ case 5:
381
+ elmValue3 = _a.sent();
382
+ if (elmValue3 != null) {
383
+ if (elmValue3 !== "")
384
+ finalElmValue = elmValue3;
385
+ }
386
+ _a.label = 6;
387
+ case 6:
388
+ if (finalElmValue != value)
389
+ throw new Error("Error: ".concat(errorMessage, ". Expected: ").concat(JSON.stringify(value), ", Actual: ").concat(JSON.stringify(finalElmValue)));
390
+ return [2 /*return*/];
391
+ }
392
+ });
393
+ });
394
+ };
395
+ return HotTestSeleniumDriver;
396
+ }(HotTestDriver_1.HotTestDriver));
397
+ exports.HotTestSeleniumDriver = HotTestSeleniumDriver;
398
+ //# sourceMappingURL=HotTestSeleniumDriver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HotTestSeleniumDriver.js","sourceRoot":"","sources":["../../src/HotTestSeleniumDriver.ts"],"names":[],"mappings":"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"}