From f49b641d98cf267601407295e2c43c10426d2df0 Mon Sep 17 00:00:00 2001 From: Pierre Dubouilh Date: Fri, 23 Feb 2018 18:31:59 +0100 Subject: [PATCH] Simple p2p test --- .travis.yml | 11 +++++++++++ client/fake-video.html | 27 ++++++++++++++++++++++++++ package.json | 9 +++++++-- tests/test.js | 43 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 88 insertions(+), 2 deletions(-) create mode 100644 .travis.yml create mode 100644 client/fake-video.html create mode 100644 tests/test.js diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..c6d6915 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,11 @@ +language: node_js +node_js: + - "8.1.3" +cache: + directories: + - node_modules +install: + - npm install +script: + - npm run lint + - npm run test diff --git a/client/fake-video.html b/client/fake-video.html new file mode 100644 index 0000000..905617b --- /dev/null +++ b/client/fake-video.html @@ -0,0 +1,27 @@ + + + + + + live-torrent demo + + +

Tests

+ + + + diff --git a/package.json b/package.json index 4a2901a..a4a52c1 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,9 @@ "description": "", "main": "index.js", "scripts": { - "test": "browserify client/loader.js -o client/build.js && node cli.js -u http://wms.shared.streamshow.it/carinatv/carinatv/ -p playlist.m3u8" + "start": "browserify client/loader.js -o client/build.js && node cli.js -u http://wms.shared.streamshow.it/carinatv/carinatv/ -p playlist.m3u8", + "lint": "standard .", + "test": "concurrently -s first --kill-others \"npm run start &>/dev/null\" \"sleep 5 && node tests/test.js\"" }, "keywords": [ "webtorrent", @@ -44,6 +46,9 @@ "yargs": "^11.0.0" }, "devDependencies": { - "standard": "^11.0.0" + "concurrently": "^3.5.1", + "puppeteer": "^1.1.0", + "standard": "^11.0.0", + "tape": "^4.9.0" } } diff --git a/tests/test.js b/tests/test.js new file mode 100644 index 0000000..207ad05 --- /dev/null +++ b/tests/test.js @@ -0,0 +1,43 @@ +const puppeteer = require('puppeteer') +const test = require('tape') + +const url = 'http://127.0.0.1:8008/fake-video.html' + +const sleep = t => new Promise(resolve => setTimeout(resolve, t)) + +async function testp2p (t) { + t.plan(1) + + // Spawn first chrome + const browser1 = await puppeteer.launch({ headless: true, args: ['--no-sandbox'] }) + const page1 = await browser1.newPage() + await page1.goto(url) + await sleep(6000) + + // Spawn second chrome + const browser2 = await puppeteer.launch({ headless: true, args: ['--no-sandbox'] }) + const page2 = await browser2.newPage() + + let p2p = false + page2.on('console', msg => { + console.log(msg.text()) + p2p = msg.text().includes('P2P Download') || msg.text().includes('P2P Upload') ? true : p2p + }) + + await page2.goto(url) + await sleep(30000) + + // Cleanup + await browser1.close() + await browser2.close() + + console.log(' ') + t.true(p2p, 'browsers exchanged content between each-others 👏') + t.end() +} + +const doTest = async () => { + test('Test p2p between 2 browsers\n', testp2p) +} + +doTest()