diff --git a/__tests__/e2e/peer1.test.js b/__tests__/e2e/peer1.test.js new file mode 100644 index 0000000000000000000000000000000000000000..18fc9d1771d658e6728407ae7a4318f44a72fdd1 --- /dev/null +++ b/__tests__/e2e/peer1.test.js @@ -0,0 +1,23 @@ +import { Selector } from "testcafe" + +fixture`Peer 1`.page`localhost:3000` + +const idAppearTimeout = 1000 +const selectorOptions = { timeout: 100 } + +test("Connection id appears", async (t) => { + const userId = async () => + await Selector("#user-id").with(selectorOptions).value + await t + .wait(idAppearTimeout) + .expect((await userId()).length) + .gt(0) +}) + +test("Clicking and dragging on whiteboard creates a single child element", async (t) => { + const whiteboard = Selector("#whiteboard").with(selectorOptions) + await t + .drag(whiteboard, 10, 10) + .expect(whiteboard.childElementCount) + .eql(1) +}) diff --git a/__tests__/e2e/peer2.test.js b/__tests__/e2e/peer2.test.js new file mode 100644 index 0000000000000000000000000000000000000000..01e143e7a40dd64de048f42cc3b2097f94a9a558 --- /dev/null +++ b/__tests__/e2e/peer2.test.js @@ -0,0 +1,16 @@ +import { Selector } from "testcafe" + +fixture`Peer 2`.page`localhost:3000` + +const selectorOptions = { timeout: 100 } + +test("Connection id appears", async (t) => { + const userID = Selector("#user-id").with(selectorOptions) + let inputValue = await userID.value + await t.expect(inputValue.length).gt(0) +}) + +test("Whiteboard eventually gets a child element", async (t) => { + const whiteboard = Selector("#whiteboard").with(selectorOptions) + await t.expect(whiteboard.childElementCount).eql(1, { timeout: 10000 }) +}) diff --git a/package-lock.json b/package-lock.json index ab81c197c1e8346c224707b1431ed1d7c9eb3f16..79fd6658bfcbf57f20efc4e96d741fa6de7bb1d4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -981,6 +981,12 @@ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, + "ansi-escapes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz", + "integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=", + "dev": true + }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -1165,6 +1171,12 @@ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", "dev": true }, + "async": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.6.tgz", + "integrity": "sha1-rT83PZJJrjJIgVZVgryQ4VKrvWg=", + "dev": true + }, "async-each": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", @@ -1257,27 +1269,12 @@ "source-map": "^0.5.7" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, "json5": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", @@ -2089,14 +2086,6 @@ "requires": { "core-js": "^2.4.0", "regenerator-runtime": "^0.11.0" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - } } }, "babel-template": { @@ -2129,26 +2118,11 @@ "lodash": "^4.17.4" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, "globals": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true } } }, @@ -3062,9 +3036,9 @@ "dev": true }, "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==", + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==", "dev": true }, "core-util-is": { @@ -3248,6 +3222,23 @@ "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", "dev": true }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", @@ -3493,9 +3484,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "electron-to-chromium": { - "version": "1.3.280", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.280.tgz", - "integrity": "sha512-qYWNMjKLEfQAWZF2Sarvo+ahigu0EArnpCFSoUuZJS3W5wIeVfeEvsgmT2mgIrieQkeQ0+xFmykK3nx2ezekPQ==", + "version": "1.3.282", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.282.tgz", + "integrity": "sha512-irSaDeCGgfMu1OA30bhqIBr+dx+pDJjRbwCpob7YWqVZbzXblybNzPGklVnWqv4EXxbkEAzQYqiNCqNTgu00lQ==", "dev": true }, "elegant-spinner": { @@ -7319,12 +7310,6 @@ "wrap-ansi": "^2.1.0" }, "dependencies": { - "ansi-escapes": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz", - "integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=", - "dev": true - }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", @@ -8649,6 +8634,12 @@ "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", "dev": true }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, "regenerator-transform": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", @@ -9948,15 +9939,6 @@ "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", "dev": true }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, "is-ci": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", @@ -9998,12 +9980,6 @@ } } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, "parse5": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", @@ -10221,12 +10197,6 @@ "strip-bom": "^2.0.0" }, "dependencies": { - "async": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.6.tgz", - "integrity": "sha1-rT83PZJJrjJIgVZVgryQ4VKrvWg=", - "dev": true - }, "babel-runtime": { "version": "5.8.38", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.38.tgz", diff --git a/package.json b/package.json index 4381dc0b4f41ac28876fec5e5348f8c8b5885bcc..2039d130978bfc19ae333f3376fbcc5b7f039495 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,8 @@ "test": "jest --testPathIgnorePatterns src/liowebrtc src/rtcpeerconnection src/signalbuddy", "test-changed": "jest --only-changed --testPathIgnorePatterns src/liowebrtc src/rtcpeerconnection src/signalbuddy", "test-coverage": "jest --coverage --testPathIgnorePatterns src/liowebrtc src/rtcpeerconnection src/signalbuddy", + "test-e2e": "npx testcafe all serverIntegration.test.js & npx testcafe all peer.test.js", + "test-e2e:chrome": "npx testcafe chrome serverIntegration.test.js & npx testcafe chrome peer.test.js", "lint": "jshint .", "validate": "npm ls" }, diff --git a/peer.test.js b/peer.test.js deleted file mode 100644 index 422bcf8e2c6008ce7aef8c5f1de8f142085b1fba..0000000000000000000000000000000000000000 --- a/peer.test.js +++ /dev/null @@ -1,11 +0,0 @@ -import { Selector } from "testcafe" - -fixture`Peer 2`.page`localhost:12345` - -const selectorOptions = { timeout: 100 } - -test("Connection id appears", async (t) => { - const articleHeader = Selector("#user-id").with(selectorOptions) - let inputValue = await articleHeader.value - await t.expect(inputValue.length).gt(0) -}) diff --git a/serverIntegration.test.js b/serverIntegration.test.js deleted file mode 100644 index 30c25e2252ea0812ad90483d5a53c552525c6058..0000000000000000000000000000000000000000 --- a/serverIntegration.test.js +++ /dev/null @@ -1,11 +0,0 @@ -import { Selector } from "testcafe" - -fixture`Peer 1`.page`localhost:12345` - -const selectorOptions = { timeout: 100 } - -test("Connection id appears", async (t) => { - const articleHeader = Selector("#user-id").with(selectorOptions) - let inputValue = await articleHeader.value - await t.expect(inputValue.length).gt(0) -}) diff --git a/serverTest.js b/serverTest.js deleted file mode 100644 index e1ac522676cb4a015a8f908e912d7f8c2be5c4ed..0000000000000000000000000000000000000000 --- a/serverTest.js +++ /dev/null @@ -1,34 +0,0 @@ -const createTestCafe = require("testcafe") -let runner = null -let runner2 = null - -createTestCafe("localhost", 1337, 1338) - .then((testcafe) => { - runner = testcafe.createRunner() - runner2 = testcafe.createRunner() - return testcafe.createBrowserConnection() - }) - .then((_) => { - runner - .src("serverTest.js") - .browsers(["chrome"]) - .reporter("json") - .run() - .then((failedCount) => { - console.log("failed count 1: " + failedCount) - runner2 - .src("peer.test.js") - .browsers(["chrome"]) - .reporter("json") - .run() - .then((failedCount) => { - console.log("failed count 2: " + failedCount) - }) - .catch((error) => { - console.log("error" + error) - }) - }) - .catch((error) => { - console.log("error" + error) - }) - }) diff --git a/src/y-webrtc/index.js b/src/y-webrtc/index.js index 0a489a17d218e67ffc0c32e9d62045427d693316..dab556d3d4a1498f17c9d08ff28d21af35ea71fa 100644 --- a/src/y-webrtc/index.js +++ b/src/y-webrtc/index.js @@ -18,7 +18,7 @@ function extend(Y) { } initialiseConnection() { - const webrtc = new LioWebRTC("12345", { + const webrtc = new LioWebRTC({ url: this.webrtcOptions.url, dataOnly: true, /*network: {