system-testing 1.0.2 → 1.0.4

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "system-testing",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "System testing with Selenium and browsers.",
5
5
  "keywords": [
6
6
  "system",
@@ -1,7 +1,7 @@
1
1
  import {digg} from "diggerize"
2
2
  import EventEmitter from "events"
3
3
 
4
- import SystemTestCommunicator from "./system-test-communicator"
4
+ import SystemTestCommunicator from "./system-test-communicator.js"
5
5
 
6
6
  const shared = {}
7
7
 
@@ -7,7 +7,6 @@ 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 {wait} from "awaitery"
11
10
  import {WebSocketServer} from "ws"
12
11
 
13
12
  class ElementNotFoundError extends Error { }
@@ -26,9 +25,9 @@ export default class SystemTest {
26
25
 
27
26
  await systemTest.communicator.sendCommand({type: "initialize"})
28
27
  await systemTest.visit("/blank")
29
- await systemTest.findByTestID("blankText")
30
28
 
31
29
  try {
30
+ await systemTest.findByTestID("blankText")
32
31
  await callback(systemTest)
33
32
  } catch (error) {
34
33
  await systemTest.takeScreenshot()
@@ -181,13 +180,11 @@ export default class SystemTest {
181
180
  .setCapability("goog:loggingPrefs", {browser: "ALL"})
182
181
  .build()
183
182
 
184
- this.setTimeouts(4000)
183
+ await this.setTimeouts(10000)
185
184
 
186
185
  // Web socket server to communicate with browser
187
186
  await this.startWebSocketServer()
188
187
 
189
- // await wait(360000)
190
-
191
188
  // Visit the root page and wait for Expo to be loaded and the app to appear
192
189
  await this.driverVisit("/?systemTest=true")
193
190
 
@@ -203,6 +200,7 @@ export default class SystemTest {
203
200
  // Wait for client to connect
204
201
  await this.waitForClientWebSocket()
205
202
 
203
+ await this.setTimeouts(4000)
206
204
  this._started = true
207
205
  }
208
206
 
@@ -1,61 +1,59 @@
1
1
  import qs from "qs"
2
2
  import SystemTestBrowserHelper from "./system-test-browser-helper"
3
- import {useCallback, useEffect, useMemo, useState} from "react"
3
+ import {useCallback, useMemo} from "react"
4
4
  import useEventEmitter from "@kaspernj/api-maker/build/use-event-emitter.js"
5
5
  import {useRouter} from "expo-router"
6
6
 
7
- export default function useSystemTest({onInitialize, ...restArgs} = {}) {
8
- const router = useRouter()
9
- const shared = useMemo(() => ({}), [])
10
- const [enabled, setEnabled] = useState(undefined)
11
- const [systemTestBrowserHelper, setSystemTestBrowserHelper] = useState()
12
-
13
- const calculateEnabled = useCallback(() => {
14
- const initialUrl = globalThis.location?.href
15
- let enabled = false
7
+ const shared = {
8
+ initialized: false,
9
+ systemTestBrowserHelper: null
10
+ }
16
11
 
17
- if (initialUrl) {
18
- const queryString = initialUrl.substring(initialUrl.indexOf("?") + 1, initialUrl.length)
19
- const queryParams = qs.parse(queryString)
12
+ const isSystemTestEnabled = () => {
13
+ let enabled = false
14
+ const initialUrl = globalThis.location?.href
20
15
 
21
- if (queryParams.systemTest == "true") {
22
- if (!shared.systemTestBrowserHelper) {
23
- console.log("Spawn SystemTestBrowserHelper")
16
+ if (initialUrl) {
17
+ const queryString = initialUrl.substring(initialUrl.indexOf("?") + 1, initialUrl.length)
18
+ const queryParams = qs.parse(queryString)
24
19
 
25
- shared.systemTestBrowserHelper = new SystemTestBrowserHelper()
26
- shared.systemTestBrowserHelper.enableOnBrowser()
20
+ if (queryParams.systemTest == "true") {
21
+ enabled = true
22
+ }
23
+ }
27
24
 
28
- setSystemTestBrowserHelper(shared.systemTestBrowserHelper)
29
- }
25
+ return enabled
26
+ }
30
27
 
31
- enabled = true
32
- }
33
- }
28
+ const getSystemTestBrowserHelper = () => {
29
+ if (!shared.systemTestBrowserHelper) {
30
+ shared.systemTestBrowserHelper = new SystemTestBrowserHelper()
31
+ shared.systemTestBrowserHelper.enableOnBrowser()
32
+ }
34
33
 
35
- shared.enabled = enabled
36
- setEnabled(enabled)
37
- }, [])
34
+ return shared.systemTestBrowserHelper
35
+ }
38
36
 
39
- const result = useMemo(() => ({
40
- enabled,
41
- systemTestBrowserHelper: systemTestBrowserHelper
42
- }), [enabled, systemTestBrowserHelper])
37
+ export default function useSystemTest({onInitialize, ...restArgs} = {}) {
38
+ const router = useRouter()
39
+ const enabled = useMemo(() => isSystemTestEnabled(), [])
40
+ const systemTestBrowserHelper = enabled ? getSystemTestBrowserHelper() : null
41
+ const result = useMemo(() => ({enabled, systemTestBrowserHelper}), [enabled, systemTestBrowserHelper])
43
42
 
44
43
  const onSystemTestBrowserHelperNavigate = useCallback(({path}) => {
45
- if (shared.enabled) {
44
+ if (enabled) {
46
45
  router.navigate(path)
47
46
  }
48
- }, [])
49
-
50
- useEffect(() => {
51
- calculateEnabled()
52
- }, [])
47
+ }, [enabled, router])
53
48
 
54
49
  useEventEmitter(shared.systemTestBrowserHelper?.getEvents(), "navigate", onSystemTestBrowserHelperNavigate)
55
50
 
56
51
  useMemo(() => {
57
- shared.systemTestBrowserHelper?.onInitialize(onInitialize)
58
- }, [onInitialize, shared.systemTestBrowserHelper])
52
+ if (enabled && !shared.initialized) {
53
+ shared.initialized = true
54
+ shared.systemTestBrowserHelper?.onInitialize(onInitialize)
55
+ }
56
+ }, [enabled, onInitialize, shared.systemTestBrowserHelper])
59
57
 
60
58
  const restArgsKeys = Object.keys(restArgs)
61
59