system-testing 1.0.18 → 1.0.20
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.
- package/package.json +1 -1
- package/src/system-test.js +15 -4
package/package.json
CHANGED
package/src/system-test.js
CHANGED
|
@@ -7,7 +7,7 @@ import moment from "moment"
|
|
|
7
7
|
import {prettify} from "htmlfy"
|
|
8
8
|
import SystemTestCommunicator from "./system-test-communicator.js"
|
|
9
9
|
import SystemTestHttpServer from "./system-test-http-server.js"
|
|
10
|
-
import {waitFor} from "awaitery"
|
|
10
|
+
import {wait, waitFor} from "awaitery"
|
|
11
11
|
import {WebSocketServer} from "ws"
|
|
12
12
|
|
|
13
13
|
class ElementNotFoundError extends Error { }
|
|
@@ -104,6 +104,10 @@ export default class SystemTest {
|
|
|
104
104
|
* @param {import("selenium-webdriver").WebElement} element
|
|
105
105
|
**/
|
|
106
106
|
async click(element) {
|
|
107
|
+
if (typeof element == "string") {
|
|
108
|
+
element = await this.find(element)
|
|
109
|
+
}
|
|
110
|
+
|
|
107
111
|
const actions = this.driver.actions({async: true})
|
|
108
112
|
|
|
109
113
|
await actions.move({origin: element}).click().perform()
|
|
@@ -187,6 +191,10 @@ export default class SystemTest {
|
|
|
187
191
|
return browserLogs
|
|
188
192
|
}
|
|
189
193
|
|
|
194
|
+
async getCurrentUrl() {
|
|
195
|
+
return await this.driver.getCurrentUrl()
|
|
196
|
+
}
|
|
197
|
+
|
|
190
198
|
/**
|
|
191
199
|
* Interacts with an element by calling a method on it with the given arguments.
|
|
192
200
|
* Retrying on ElementNotInteractableError.
|
|
@@ -220,11 +228,13 @@ export default class SystemTest {
|
|
|
220
228
|
if (error.constructor.name === "ElementNotInteractableError") {
|
|
221
229
|
// Retry finding the element and interacting with it
|
|
222
230
|
if (tries >= 3) {
|
|
223
|
-
throw new Error(`${element.constructor.name} ${methodName} failed after ${tries} tries: ${error.message}`)
|
|
231
|
+
throw new Error(`${element.constructor.name} ${methodName} failed after ${tries} tries - ${error.constructor.name}: ${error.message}`)
|
|
232
|
+
} else {
|
|
233
|
+
await wait(100)
|
|
224
234
|
}
|
|
225
235
|
} else {
|
|
226
236
|
// Re-throw with un-corrupted stack trace
|
|
227
|
-
throw new Error(`${element.constructor.name} ${methodName} failed: ${error.message}`)
|
|
237
|
+
throw new Error(`${element.constructor.name} ${methodName} failed - ${error.constructor.name}: ${error.message}`)
|
|
228
238
|
}
|
|
229
239
|
}
|
|
230
240
|
}
|
|
@@ -338,7 +348,7 @@ export default class SystemTest {
|
|
|
338
348
|
.setCapability("goog:loggingPrefs", {browser: "ALL"})
|
|
339
349
|
.build()
|
|
340
350
|
|
|
341
|
-
await this.setTimeouts(
|
|
351
|
+
await this.setTimeouts(5000)
|
|
342
352
|
|
|
343
353
|
// Web socket server to communicate with browser
|
|
344
354
|
await this.startWebSocketServer()
|
|
@@ -521,6 +531,7 @@ export default class SystemTest {
|
|
|
521
531
|
await fs.writeFile(logsPath, logsText.join("\n"))
|
|
522
532
|
await fs.writeFile(screenshotPath, imageContent, "base64")
|
|
523
533
|
|
|
534
|
+
console.log("Current URL:", await this.getCurrentUrl())
|
|
524
535
|
console.log("Logs:", logsPath)
|
|
525
536
|
console.log("Screenshot:", screenshotPath)
|
|
526
537
|
console.log("HTML:", htmlPath)
|