From 4b97522c34c09d14adece147bf3b09b9fe1f8df1 Mon Sep 17 00:00:00 2001 From: Philip Walton Date: Thu, 28 Mar 2019 10:40:30 -0700 Subject: [PATCH 1/2] Rename files --- test/workbox-range-requests/{node => sw}/exports.mjs | 0 .../{node/Plugin.mjs => sw/test-Plugin.mjs} | 0 .../test-createPartialResponse.mjs} | 0 .../utils/test-calculateEffectiveBoundaries.mjs} | 0 .../parseRangeHeader.mjs => sw/utils/test-parseRangeHeader.mjs} | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename test/workbox-range-requests/{node => sw}/exports.mjs (100%) rename test/workbox-range-requests/{node/Plugin.mjs => sw/test-Plugin.mjs} (100%) rename test/workbox-range-requests/{node/createPartialResponse.mjs => sw/test-createPartialResponse.mjs} (100%) rename test/workbox-range-requests/{node/utils/calculateEffectiveBoundaries.mjs => sw/utils/test-calculateEffectiveBoundaries.mjs} (100%) rename test/workbox-range-requests/{node/utils/parseRangeHeader.mjs => sw/utils/test-parseRangeHeader.mjs} (100%) diff --git a/test/workbox-range-requests/node/exports.mjs b/test/workbox-range-requests/sw/exports.mjs similarity index 100% rename from test/workbox-range-requests/node/exports.mjs rename to test/workbox-range-requests/sw/exports.mjs diff --git a/test/workbox-range-requests/node/Plugin.mjs b/test/workbox-range-requests/sw/test-Plugin.mjs similarity index 100% rename from test/workbox-range-requests/node/Plugin.mjs rename to test/workbox-range-requests/sw/test-Plugin.mjs diff --git a/test/workbox-range-requests/node/createPartialResponse.mjs b/test/workbox-range-requests/sw/test-createPartialResponse.mjs similarity index 100% rename from test/workbox-range-requests/node/createPartialResponse.mjs rename to test/workbox-range-requests/sw/test-createPartialResponse.mjs diff --git a/test/workbox-range-requests/node/utils/calculateEffectiveBoundaries.mjs b/test/workbox-range-requests/sw/utils/test-calculateEffectiveBoundaries.mjs similarity index 100% rename from test/workbox-range-requests/node/utils/calculateEffectiveBoundaries.mjs rename to test/workbox-range-requests/sw/utils/test-calculateEffectiveBoundaries.mjs diff --git a/test/workbox-range-requests/node/utils/parseRangeHeader.mjs b/test/workbox-range-requests/sw/utils/test-parseRangeHeader.mjs similarity index 100% rename from test/workbox-range-requests/node/utils/parseRangeHeader.mjs rename to test/workbox-range-requests/sw/utils/test-parseRangeHeader.mjs From 9fc84a2e0c907825e0389ba9cf7c66766cb34253 Mon Sep 17 00:00:00 2001 From: Philip Walton Date: Thu, 28 Mar 2019 12:22:31 -0700 Subject: [PATCH 2/2] Update tests to run in a SW env --- .../{range-requests-plugin.js => test-all.js} | 22 +++++++++++++----- test/workbox-range-requests/sw/exports.mjs | 21 ----------------- .../workbox-range-requests/sw/test-Plugin.mjs | 5 ++-- .../sw/test-createPartialResponse.mjs | 23 ++++++++++--------- .../test-calculateEffectiveBoundaries.mjs | 13 ++++------- .../sw/utils/test-parseRangeHeader.mjs | 11 ++++----- 6 files changed, 40 insertions(+), 55 deletions(-) rename test/workbox-range-requests/integration/{range-requests-plugin.js => test-all.js} (71%) delete mode 100644 test/workbox-range-requests/sw/exports.mjs diff --git a/test/workbox-range-requests/integration/range-requests-plugin.js b/test/workbox-range-requests/integration/test-all.js similarity index 71% rename from test/workbox-range-requests/integration/range-requests-plugin.js rename to test/workbox-range-requests/integration/test-all.js index 79a3bade0..c1ea8788e 100644 --- a/test/workbox-range-requests/integration/range-requests-plugin.js +++ b/test/workbox-range-requests/integration/test-all.js @@ -7,17 +7,27 @@ */ const expect = require('chai').expect; - const activateAndControlSW = require('../../../infra/testing/activate-and-control'); const cleanSWEnv = require('../../../infra/testing/clean-sw'); +const {runUnitTests} = require('../../../infra/testing/webdriver/runUnitTests'); + + +// Store local references of these globals. +const {webdriver, server} = global.__workbox; + +describe(`[workbox-range-requests]`, function() { + it(`passes all SW unit tests`, async function() { + await runUnitTests('/test/workbox-range-requests/sw/'); + }); +}); -describe(`rangeRequests.Plugin`, function() { - const testServerAddress = global.__workbox.server.getAddress(); +describe(`[workbox-range-requests] Plugin`, function() { + const testServerAddress = server.getAddress(); const testingURL = `${testServerAddress}/test/workbox-range-requests/static/`; beforeEach(async function() { // Navigate to our test page and clear all caches before this test runs. - await cleanSWEnv(global.__workbox.webdriver, testingURL); + await cleanSWEnv(webdriver, testingURL); }); it(`should return a partial response that satisfies the request's Range: header, and an error response when it can't be satisfied`, async function() { @@ -26,7 +36,7 @@ describe(`rangeRequests.Plugin`, function() { const dummyURL = `this-file-doesnt-exist.txt`; - const partialResponseBody = await global.__workbox.webdriver.executeAsyncScript((dummyURL, cb) => { + const partialResponseBody = await webdriver.executeAsyncScript((dummyURL, cb) => { // Prime the cache, and then make the Range: request. fetch(new Request(dummyURL, {headers: {Range: `bytes=5-6`}})) .then((response) => response.text()) @@ -38,7 +48,7 @@ describe(`rangeRequests.Plugin`, function() { // 11 characters returned in the partial response. expect(partialResponseBody).to.eql('56'); - const errorResponseStatus = await global.__workbox.webdriver.executeAsyncScript((dummyURL, cb) => { + const errorResponseStatus = await webdriver.executeAsyncScript((dummyURL, cb) => { // These are arbitrary large values that extend past the end of the file. fetch(new Request(dummyURL, {headers: {Range: `bytes=100-101`}})) .then((response) => cb(response.status)); diff --git a/test/workbox-range-requests/sw/exports.mjs b/test/workbox-range-requests/sw/exports.mjs deleted file mode 100644 index a2ef00f59..000000000 --- a/test/workbox-range-requests/sw/exports.mjs +++ /dev/null @@ -1,21 +0,0 @@ -/* - Copyright 2018 Google LLC - - Use of this source code is governed by an MIT-style - license that can be found in the LICENSE file or at - https://opensource.org/licenses/MIT. -*/ - -import {expect} from 'chai'; - -import * as rangeRequests from '../../../packages/workbox-range-requests/index.mjs'; - -describe(`[workbox-range-requests] exports`, function() { - const expectedExports = ['createPartialResponse', 'Plugin']; - - for (const expectedExport of expectedExports) { - it(`should expose a ${expectedExport} property`, function() { - expect(rangeRequests).to.have.property(expectedExport); - }); - } -}); diff --git a/test/workbox-range-requests/sw/test-Plugin.mjs b/test/workbox-range-requests/sw/test-Plugin.mjs index f56746e7b..8e9c7700c 100644 --- a/test/workbox-range-requests/sw/test-Plugin.mjs +++ b/test/workbox-range-requests/sw/test-Plugin.mjs @@ -6,11 +6,10 @@ https://opensource.org/licenses/MIT. */ -import {expect} from 'chai'; +import {Plugin} from 'workbox-range-requests/Plugin.mjs'; -import {Plugin} from '../../../packages/workbox-range-requests/Plugin.mjs'; -describe(`[workbox-range-requests] Plugin`, function() { +describe(`Plugin`, function() { it(`should construct with no values`, function() { new Plugin(); }); diff --git a/test/workbox-range-requests/sw/test-createPartialResponse.mjs b/test/workbox-range-requests/sw/test-createPartialResponse.mjs index bf7f871c0..32c56986d 100644 --- a/test/workbox-range-requests/sw/test-createPartialResponse.mjs +++ b/test/workbox-range-requests/sw/test-createPartialResponse.mjs @@ -6,11 +6,10 @@ https://opensource.org/licenses/MIT. */ -import {expect} from 'chai'; +import {createPartialResponse} from 'workbox-range-requests/createPartialResponse.mjs'; -import {createPartialResponse} from '../../../packages/workbox-range-requests/createPartialResponse.mjs'; -describe(`[workbox-range-requests] createPartialResponse`, function() { +describe(`createPartialResponse()`, function() { // This uses an interface that matches what our Blob mock currently supports. // It's *not* the same way we'd use native browser implementation. function constructBlob(length) { @@ -35,29 +34,31 @@ describe(`[workbox-range-requests] createPartialResponse`, function() { it(`should return a Response with status 416 when the 'request' parameter isn't valid`, async function() { const response = await createPartialResponse(null, VALID_RESPONSE); - expect(response.status).to.eql(416); + expect(response.status).to.equal(416); }); it(`should return a Response with status 416 when the 'response' parameter isn't valid`, async function() { const response = await createPartialResponse(VALID_REQUEST, null); - expect(response.status).to.eql(416); + expect(response.status).to.equal(416); }); it(`should return a Response with status 416 when there's no Range: header in the request`, async function() { const noRangeHeaderRequest = new Request('/'); const response = await createPartialResponse(noRangeHeaderRequest, VALID_RESPONSE); - expect(response.status).to.eql(416); + expect(response.status).to.equal(416); }); it(`should return the expected Response when it's called with valid parameters`, async function() { const response = await createPartialResponse(VALID_REQUEST, VALID_RESPONSE); - expect(response.status).to.eql(206); - expect(response.headers.get('Content-Length')).to.eql(101); - expect(response.headers.get('Content-Range')).to.eql(`bytes 100-200/${SOURCE_BLOB_SIZE}`); + expect(response.status).to.equal(206); + expect(response.headers.get('Content-Length')).to.equal('101'); + expect(response.headers.get('Content-Range')).to.equal(`bytes 100-200/${SOURCE_BLOB_SIZE}`); const responseBlob = await response.blob(); const expectedBlob = constructBlob(101); - expect(responseBlob._text).to.eql(expectedBlob._text); + + expect(await (new Response(responseBlob)).text()) + .to.equal(await (new Response(expectedBlob)).text()); }); it(`should handle being passed a Response with a status of 206 by returning it as-is`, async function() { @@ -65,7 +66,7 @@ describe(`[workbox-range-requests] createPartialResponse`, function() { const createdPartialResponse = await createPartialResponse(VALID_REQUEST, originalPartialResponse); // We should get back the exact same response. - expect(createdPartialResponse).to.eql(originalPartialResponse); + expect(createdPartialResponse).to.equal(originalPartialResponse); }); }); }); diff --git a/test/workbox-range-requests/sw/utils/test-calculateEffectiveBoundaries.mjs b/test/workbox-range-requests/sw/utils/test-calculateEffectiveBoundaries.mjs index 5ca8d6dd0..1804a1ceb 100644 --- a/test/workbox-range-requests/sw/utils/test-calculateEffectiveBoundaries.mjs +++ b/test/workbox-range-requests/sw/utils/test-calculateEffectiveBoundaries.mjs @@ -6,15 +6,10 @@ https://opensource.org/licenses/MIT. */ -import {expect} from 'chai'; +import {calculateEffectiveBoundaries} from 'workbox-range-requests/utils/calculateEffectiveBoundaries.mjs'; -import {calculateEffectiveBoundaries} from '../../../../packages/workbox-range-requests/utils/calculateEffectiveBoundaries.mjs'; -import expectError from '../../../../infra/testing/expectError'; -import {devOnly} from '../../../../infra/testing/env-it'; -describe(`[workbox-range-requests] utils/calculateEffectiveBoundaries`, function() { - // This uses an interface that matches what our Blob mock currently supports. - // It's *not* the same way we'd use native browser implementation. +describe(`calculateEffectiveBoundaries()`, function() { function constructBlob(length) { let string = ''; for (let i = 0; i < length; i++) { @@ -26,7 +21,9 @@ describe(`[workbox-range-requests] utils/calculateEffectiveBoundaries`, function const SOURCE_BLOB_SIZE = 256; const SOURCE_BLOB = constructBlob(SOURCE_BLOB_SIZE); - devOnly.it(`should throw when it's is called with an invalid 'blob' parameter`, async function() { + it(`should throw when it's is called with an invalid 'blob' parameter`, async function() { + if (process.env.NODE_ENV === 'production') this.skip(); + const invalidBlob = null; await expectError( () => calculateEffectiveBoundaries(invalidBlob), diff --git a/test/workbox-range-requests/sw/utils/test-parseRangeHeader.mjs b/test/workbox-range-requests/sw/utils/test-parseRangeHeader.mjs index 0013e992d..49363c91d 100644 --- a/test/workbox-range-requests/sw/utils/test-parseRangeHeader.mjs +++ b/test/workbox-range-requests/sw/utils/test-parseRangeHeader.mjs @@ -6,14 +6,13 @@ https://opensource.org/licenses/MIT. */ -import {expect} from 'chai'; +import {parseRangeHeader} from 'workbox-range-requests/utils/parseRangeHeader.mjs'; -import {parseRangeHeader} from '../../../../packages/workbox-range-requests/utils/parseRangeHeader.mjs'; -import expectError from '../../../../infra/testing/expectError'; -import {devOnly} from '../../../../infra/testing/env-it'; -describe(`[workbox-range-requests] utils/parseRangeHeader`, function() { - devOnly.it(`should throw when it's is called with an invalid 'rangeHeader' parameter`, async function() { +describe(`parseRangeHeader()`, function() { + it(`should throw when it's is called with an invalid 'rangeHeader' parameter`, async function() { + if (process.env.NODE_ENV === 'production') this.skip(); + const rangeHeader = null; await expectError( () => parseRangeHeader(rangeHeader),