diff --git a/.github/workflows/node.yml b/.github/workflows/node.yml index 70d84f1..c9c711f 100644 --- a/.github/workflows/node.yml +++ b/.github/workflows/node.yml @@ -93,6 +93,9 @@ jobs: uses: actions/setup-node@v2 with: node-version: ${{ matrix.node-version }} + - uses: denoland/setup-deno@v1 + with: + deno-version: v1.x - uses: actions/cache@v2 with: path: '~/.npm' diff --git a/package-lock.json b/package-lock.json index 78af571..d7f30b4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,6 @@ "@wdio/logger": "^7.7.0", "chromedriver": "^93.0.1", "cli-table3": "^0.6.0", - "deno-prebuilt": "^1.0.4", "geckodriver": "^2.0.4", "get-port": "^5.1.1", "koa": "^2.13.1", @@ -2337,18 +2336,6 @@ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" }, - "node_modules/deno-prebuilt": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/deno-prebuilt/-/deno-prebuilt-1.0.4.tgz", - "integrity": "sha512-1/h9fhFWoANZW3ijYhliblr063PMCO+dcfyrc1vdgjZtOtqMg4hYnzmyAhH+/ah4W4QhRMURAfh9qXJdqc/7aA==", - "hasInstallScript": true, - "dependencies": { - "yauzl": "^2.10.0" - }, - "bin": { - "deno-prebuilt": "bin.js" - } - }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -9103,14 +9090,6 @@ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" }, - "deno-prebuilt": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/deno-prebuilt/-/deno-prebuilt-1.0.4.tgz", - "integrity": "sha512-1/h9fhFWoANZW3ijYhliblr063PMCO+dcfyrc1vdgjZtOtqMg4hYnzmyAhH+/ah4W4QhRMURAfh9qXJdqc/7aA==", - "requires": { - "yauzl": "^2.10.0" - } - }, "depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", diff --git a/package.json b/package.json index f33429d..dc536c3 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,6 @@ "@wdio/logger": "^7.7.0", "chromedriver": "^93.0.1", "cli-table3": "^0.6.0", - "deno-prebuilt": "^1.0.4", "geckodriver": "^2.0.4", "get-port": "^5.1.1", "koa": "^2.13.1", diff --git a/src/index.ts b/src/index.ts index 2a02ece..e606b02 100644 --- a/src/index.ts +++ b/src/index.ts @@ -14,11 +14,11 @@ logger.setLevel('fetch-compare', 'warn'); const silent = true; const platforms: Record = { + deno: new PlatformDeno(), + node: new PlatformNode(), chrome: new PlatformBrowser(chrome, 'chrome', silent), firefox: new PlatformBrowser(firefox, 'firefox', silent), safari: new PlatformBrowser(safari, 'safari', silent), - node: new PlatformNode(), - deno: new PlatformDeno(), }; function formatValue(v: ResultObject): string { diff --git a/src/platform-deno.ts b/src/platform-deno.ts index b6431aa..855190f 100644 --- a/src/platform-deno.ts +++ b/src/platform-deno.ts @@ -1,7 +1,6 @@ +import {platform} from 'os'; import {spawn} from 'child_process'; import logger from '@wdio/logger'; -// @ts-expect-error: Missing types -import {binary} from 'deno-prebuilt'; import {Platform, Result} from './types.js'; @@ -10,18 +9,20 @@ const log = logger('fetch-compare'); export default class PlatformDeno implements Platform { async run(ctx: Record, file: string): Promise { const child = spawn( - binary, + platform() === 'win32' ? 'deno.exe' : 'deno', ['run', '--allow-read', '--allow-net=httpbin.org', 'index-deno.js', file], - {cwd: ctx.fixturesPath}, + {cwd: ctx.fixturesPath, stdio: ['pipe', 'pipe', 'inherit']}, ); const stdout = await new Promise((resolve, reject) => { - child.once('error', reject); - child.once('exit', reject); let stdout = ''; child.stdout.on('data', (data) => { stdout += data; }); - child.once('exit', () => { + child.once('error', reject); + child.once('exit', (code) => { + if (code !== 0) { + reject(code); + } resolve(stdout); }); });