diff --git a/package-lock.json b/package-lock.json index 4f47a13d419..2201ffec736 100644 --- a/package-lock.json +++ b/package-lock.json @@ -34,7 +34,7 @@ "@typescript-eslint/parser": "8.38.0", "babel-loader": "10.0.0", "babel-plugin-transform-remove-console": "6.9.4", - "chai": "4.5.0", + "chai": "6.0.1", "chart.js": "2.9.4", "chromedriver": "140.0.2", "doctoc": "2.2.1", @@ -4893,15 +4893,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/ast-types": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", @@ -5305,30 +5296,13 @@ } }, "node_modules/chai": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", - "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", - "dev": true, - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.3", - "deep-eql": "^4.1.3", - "get-func-name": "^2.0.2", - "loupe": "^2.3.6", - "pathval": "^1.1.1", - "type-detect": "^4.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chai/node_modules/type-detect": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", - "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.0.1.tgz", + "integrity": "sha512-/JOoU2//6p5vCXh00FpNgtlw0LjvhGttaWc+y7wpW9yjBm3ys0dI8tSKZxIOgNruz5J0RleccatSIC3uxEZP0g==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=18" } }, "node_modules/chalk": { @@ -5404,18 +5378,6 @@ "color-name": "^1.0.0" } }, - "node_modules/check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", - "dev": true, - "dependencies": { - "get-func-name": "^2.0.2" - }, - "engines": { - "node": "*" - } - }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -5884,18 +5846,6 @@ } } }, - "node_modules/deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dev": true, - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -7715,15 +7665,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/get-intrinsic": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", @@ -9827,15 +9768,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", - "dev": true, - "dependencies": { - "get-func-name": "^2.0.0" - } - }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -11331,15 +11263,6 @@ "dev": true, "license": "MIT" }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -12680,6 +12603,7 @@ "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-3.7.0.tgz", "integrity": "sha512-mf5NURdUaSdnatJx3uhoBOrY9dtL19fiOtAdT1Azxg3+lNJFiuN0uzaU3xX1LeAfL17kHQhTAJgpsfhbMJMY2g==", "dev": true, + "license": "(BSD-2-Clause OR WTFPL)", "peerDependencies": { "chai": "^4.0.0", "sinon": ">=4.0.0" @@ -17925,12 +17849,6 @@ "is-array-buffer": "^3.0.4" } }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true - }, "ast-types": { "version": "0.13.4", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", @@ -18222,27 +18140,10 @@ "dev": true }, "chai": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", - "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", - "dev": true, - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.3", - "deep-eql": "^4.1.3", - "get-func-name": "^2.0.2", - "loupe": "^2.3.6", - "pathval": "^1.1.1", - "type-detect": "^4.1.0" - }, - "dependencies": { - "type-detect": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", - "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", - "dev": true - } - } + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.0.1.tgz", + "integrity": "sha512-/JOoU2//6p5vCXh00FpNgtlw0LjvhGttaWc+y7wpW9yjBm3ys0dI8tSKZxIOgNruz5J0RleccatSIC3uxEZP0g==", + "dev": true }, "chalk": { "version": "2.4.2", @@ -18302,15 +18203,6 @@ "color-name": "^1.0.0" } }, - "check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", - "dev": true, - "requires": { - "get-func-name": "^2.0.2" - } - }, "chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -18679,15 +18571,6 @@ "ms": "2.1.2" } }, - "deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dev": true, - "requires": { - "type-detect": "^4.0.0" - } - }, "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -20012,12 +19895,6 @@ "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", "dev": true }, - "get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", - "dev": true - }, "get-intrinsic": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", @@ -21515,15 +21392,6 @@ "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", "dev": true }, - "loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", - "dev": true, - "requires": { - "get-func-name": "^2.0.0" - } - }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -22607,12 +22475,6 @@ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", "dev": true }, - "pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true - }, "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", diff --git a/package.json b/package.json index db6bbe9adc4..a48c9981b78 100644 --- a/package.json +++ b/package.json @@ -92,7 +92,7 @@ "@typescript-eslint/parser": "8.38.0", "babel-loader": "10.0.0", "babel-plugin-transform-remove-console": "6.9.4", - "chai": "4.5.0", + "chai": "6.0.1", "chart.js": "2.9.4", "chromedriver": "140.0.2", "doctoc": "2.2.1", diff --git a/tests/functional/auto/setup.js b/tests/functional/auto/setup.js index b0244d62a7f..78022b48953 100644 --- a/tests/functional/auto/setup.js +++ b/tests/functional/auto/setup.js @@ -10,8 +10,7 @@ const HttpServer = require('http-server'); const streams = require('../../test-streams'); const useSauce = !!process.env.SAUCE || !!process.env.SAUCE_TUNNEL_ID; const HlsjsLightBuild = !!process.env.HLSJS_LIGHT; -const chai = require('chai'); -const expect = chai.expect; +const { expect } = require('chai'); const UA = process.env.UA || 'chrome'; const UA_VERSION = process.env.UA_VERSION || 'latest'; diff --git a/tests/index.js b/tests/index.js index d4d347f240c..d855e7f584e 100644 --- a/tests/index.js +++ b/tests/index.js @@ -1,4 +1,6 @@ import 'promise-polyfill/src/polyfill'; +// Setup global chai for karma-sinon-chai compatibility +import * as chai from 'chai'; import './unit/hls'; import './unit/events'; import './unit/controller/abr-controller'; @@ -53,3 +55,5 @@ import './unit/utils/texttrack-utils'; import './unit/utils/vttparser'; import './unit/utils/utf8'; import './unit/demuxer/transmuxer'; +// eslint-disable-next-line no-restricted-globals +window.chai = chai; diff --git a/tests/unit/controller/abr-controller.ts b/tests/unit/controller/abr-controller.ts index b5702ba1749..3b4ca4f23b6 100644 --- a/tests/unit/controller/abr-controller.ts +++ b/tests/unit/controller/abr-controller.ts @@ -1,4 +1,4 @@ -import chai from 'chai'; +import { expect, use } from 'chai'; import sinon from 'sinon'; import sinonChai from 'sinon-chai'; import { Events } from '../../../src/events'; @@ -17,8 +17,7 @@ import type { MediaPlaylist, } from '../../../src/types/media-playlist'; -chai.use(sinonChai); -const expect = chai.expect; +use(sinonChai); function levelDetailsWithDuration(duration: number) { const details = new LevelDetails(''); diff --git a/tests/unit/controller/audio-stream-controller.ts b/tests/unit/controller/audio-stream-controller.ts index aae6d9f79f1..a4b08ded751 100644 --- a/tests/unit/controller/audio-stream-controller.ts +++ b/tests/unit/controller/audio-stream-controller.ts @@ -1,4 +1,4 @@ -import chai from 'chai'; +import { expect, use } from 'chai'; import sinon from 'sinon'; import sinonChai from 'sinon-chai'; import { hlsDefaultConfig } from '../../../src/config'; @@ -26,8 +26,7 @@ import type { MediaPlaylist, } from '../../../src/types/media-playlist'; -chai.use(sinonChai); -const expect = chai.expect; +use(sinonChai); type AudioStreamControllerTestable = Omit< AudioStreamController, diff --git a/tests/unit/controller/audio-track-controller.ts b/tests/unit/controller/audio-track-controller.ts index cccbed0ce91..b0a09af83db 100644 --- a/tests/unit/controller/audio-track-controller.ts +++ b/tests/unit/controller/audio-track-controller.ts @@ -1,4 +1,4 @@ -import chai from 'chai'; +import { expect, use } from 'chai'; import sinon from 'sinon'; import sinonChai from 'sinon-chai'; import AudioTrackController from '../../../src/controller/audio-track-controller'; @@ -21,8 +21,7 @@ import type { MediaPlaylist, } from '../../../src/types/media-playlist'; -chai.use(sinonChai); -const expect = chai.expect; +use(sinonChai); type HlsTestable = Omit< Hls, diff --git a/tests/unit/controller/base-stream-controller.ts b/tests/unit/controller/base-stream-controller.ts index 52aaef8e679..090ccab079e 100644 --- a/tests/unit/controller/base-stream-controller.ts +++ b/tests/unit/controller/base-stream-controller.ts @@ -1,4 +1,4 @@ -import chai from 'chai'; +import { expect, use } from 'chai'; import sinonChai from 'sinon-chai'; import { hlsDefaultConfig } from '../../../src/config'; import BaseStreamController from '../../../src/controller/stream-controller'; @@ -11,8 +11,7 @@ import { TimeRangesMock } from '../../mocks/time-ranges.mock'; import type { MediaFragment, Part } from '../../../src/loader/fragment'; import type { BufferInfo } from '../../../src/utils/buffer-helper'; -chai.use(sinonChai); -const expect = chai.expect; +use(sinonChai); type BaseStreamControllerTestable = Omit< BaseStreamController, diff --git a/tests/unit/controller/buffer-controller-operations.ts b/tests/unit/controller/buffer-controller-operations.ts index 7502f74e45e..d8ff398ccb6 100644 --- a/tests/unit/controller/buffer-controller-operations.ts +++ b/tests/unit/controller/buffer-controller-operations.ts @@ -1,4 +1,4 @@ -import chai from 'chai'; +import { expect, use } from 'chai'; import sinon from 'sinon'; import sinonChai from 'sinon-chai'; import BufferController from '../../../src/controller/buffer-controller'; @@ -25,8 +25,7 @@ import type { import type { BufferAppendingData } from '../../../src/types/events'; import type { MockSourceBuffer } from '../utils/mock-media'; -chai.use(sinonChai); -const expect = chai.expect; +use(sinonChai); const sandbox = sinon.createSandbox(); type HlsTestable = Omit & { diff --git a/tests/unit/controller/buffer-controller.ts b/tests/unit/controller/buffer-controller.ts index 86994802693..8df23ecb21d 100644 --- a/tests/unit/controller/buffer-controller.ts +++ b/tests/unit/controller/buffer-controller.ts @@ -1,4 +1,4 @@ -import chai from 'chai'; +import { expect, use } from 'chai'; import sinon from 'sinon'; import sinonChai from 'sinon-chai'; import BufferController from '../../../src/controller/buffer-controller'; @@ -18,8 +18,7 @@ import type { NetworkComponentAPI, } from '../../../src/types/component-api'; -chai.use(sinonChai); -const expect = chai.expect; +use(sinonChai); type HlsTestable = Omit & { coreComponents: ComponentAPI[]; diff --git a/tests/unit/controller/buffer-operation-queue.ts b/tests/unit/controller/buffer-operation-queue.ts index c2554b7c24c..5ecb914a06c 100644 --- a/tests/unit/controller/buffer-operation-queue.ts +++ b/tests/unit/controller/buffer-operation-queue.ts @@ -1,4 +1,4 @@ -import chai from 'chai'; +import { expect, use } from 'chai'; import sinon from 'sinon'; import sinonChai from 'sinon-chai'; import BufferOperationQueue from '../../../src/controller/buffer-operation-queue'; @@ -7,8 +7,7 @@ import type { SourceBufferTrackSet, } from '../../../src/types/buffer'; -chai.use(sinonChai); -const expect = chai.expect; +use(sinonChai); const queueNames = ['audio', 'video']; describe('BufferOperationQueue tests', function () { diff --git a/tests/unit/controller/cap-level-controller.ts b/tests/unit/controller/cap-level-controller.ts index cd143b60051..91baa2eb843 100644 --- a/tests/unit/controller/cap-level-controller.ts +++ b/tests/unit/controller/cap-level-controller.ts @@ -1,4 +1,4 @@ -import chai from 'chai'; +import { expect, use } from 'chai'; import sinon from 'sinon'; import sinonChai from 'sinon-chai'; import CapLevelController from '../../../src/controller/cap-level-controller'; @@ -7,8 +7,7 @@ import Hls from '../../../src/hls'; import { Level } from '../../../src/types/level'; import { parsedLevel } from '../utils/mock-level'; -chai.use(sinonChai); -const expect = chai.expect; +use(sinonChai); const parsedLevels = [ parsedLevel({ diff --git a/tests/unit/controller/cmcd-controller.ts b/tests/unit/controller/cmcd-controller.ts index 6e805a62947..21a5b43c3e2 100644 --- a/tests/unit/controller/cmcd-controller.ts +++ b/tests/unit/controller/cmcd-controller.ts @@ -1,5 +1,5 @@ import { CmcdHeaderField } from '@svta/common-media-library/cmcd/CmcdHeaderField'; -import chai from 'chai'; +import { expect } from 'chai'; import CMCDController from '../../../src/controller/cmcd-controller'; import Hls from '../../../src/hls'; import M3U8Parser from '../../../src/loader/m3u8-parser'; @@ -7,8 +7,6 @@ import { PlaylistLevelType } from '../../../src/types/loader'; import type { CMCDControllerConfig } from '../../../src/config'; import type { Fragment, Part } from '../../../src/loader/fragment'; -const expect = chai.expect; - let cmcdController; const url = 'https://dummy.url.com/playlist.m3u8'; diff --git a/tests/unit/controller/content-steering-controller.ts b/tests/unit/controller/content-steering-controller.ts index 104da9b15fa..a58b7e31f46 100644 --- a/tests/unit/controller/content-steering-controller.ts +++ b/tests/unit/controller/content-steering-controller.ts @@ -1,4 +1,4 @@ -import chai from 'chai'; +import { expect, use } from 'chai'; import sinon from 'sinon'; import sinonChai from 'sinon-chai'; import { multivariantPlaylistWithPathways } from './level-controller'; @@ -25,8 +25,7 @@ import type { Level } from '../../../src/types/level'; import type { LoaderResponse } from '../../../src/types/loader'; import type { MediaPlaylist } from '../../../src/types/media-playlist'; -chai.use(sinonChai); -const expect = chai.expect; +use(sinonChai); type ConentSteeringControllerTestable = Omit< ContentSteeringController, diff --git a/tests/unit/controller/eme-controller.ts b/tests/unit/controller/eme-controller.ts index f8fd2164d36..66d44d48c33 100644 --- a/tests/unit/controller/eme-controller.ts +++ b/tests/unit/controller/eme-controller.ts @@ -1,4 +1,4 @@ -import chai from 'chai'; +import { expect, use } from 'chai'; import { EventEmitter } from 'eventemitter3'; import { fakeXhr } from 'nise'; import sinon from 'sinon'; @@ -15,8 +15,7 @@ import HlsMock from '../../mocks/hls.mock'; import type { MediaKeySessionContext } from '../../../src/controller/eme-controller'; import type { MediaAttachedData } from '../../../src/types/events'; -chai.use(sinonChai); -const expect = chai.expect; +use(sinonChai); type EMEControllerTestable = Omit< EMEController, diff --git a/tests/unit/controller/error-controller.ts b/tests/unit/controller/error-controller.ts index e7200de6e6c..6e4550e2c82 100644 --- a/tests/unit/controller/error-controller.ts +++ b/tests/unit/controller/error-controller.ts @@ -1,4 +1,4 @@ -import chai from 'chai'; +import { expect, use } from 'chai'; import { fakeServer } from 'nise'; import sinon from 'sinon'; import sinonChai from 'sinon-chai'; @@ -12,8 +12,7 @@ import type { LevelSwitchingData, } from '../../../src/types/events'; -chai.use(sinonChai); -const expect = chai.expect; +use(sinonChai); describe('ErrorController Integration Tests', function () { let server: sinon.SinonFakeServer; diff --git a/tests/unit/controller/ewma-bandwidth-estimator.ts b/tests/unit/controller/ewma-bandwidth-estimator.ts index 038e0546ba3..43dee37ed15 100644 --- a/tests/unit/controller/ewma-bandwidth-estimator.ts +++ b/tests/unit/controller/ewma-bandwidth-estimator.ts @@ -1,9 +1,8 @@ -import chai from 'chai'; +import { expect, use } from 'chai'; import sinonChai from 'sinon-chai'; import EwmaBandWidthEstimator from '../../../src/utils/ewma-bandwidth-estimator'; -chai.use(sinonChai); -const expect = chai.expect; +use(sinonChai); describe('EwmaBandWidthEstimator', function () { it('returns default estimate if bw estimator not available yet', function () { diff --git a/tests/unit/controller/fragment-finders.ts b/tests/unit/controller/fragment-finders.ts index 58b2655df6b..84c6cc9f8cc 100644 --- a/tests/unit/controller/fragment-finders.ts +++ b/tests/unit/controller/fragment-finders.ts @@ -1,4 +1,4 @@ -import chai from 'chai'; +import { expect, use } from 'chai'; import sinon from 'sinon'; import sinonChai from 'sinon-chai'; import { @@ -17,8 +17,7 @@ import { } from '../../mocks/data'; import type { MediaFragment } from '../../../src/loader/fragment'; -chai.use(sinonChai); -const expect = chai.expect; +use(sinonChai); function makeMockFragment(options): MediaFragment { return fragment(Object.assign({ start: 0, sn: 0, cc: 0, level: 0 }, options)); diff --git a/tests/unit/controller/fragment-tracker.ts b/tests/unit/controller/fragment-tracker.ts index 8c0fdf28e7c..669ad59eb15 100644 --- a/tests/unit/controller/fragment-tracker.ts +++ b/tests/unit/controller/fragment-tracker.ts @@ -1,4 +1,4 @@ -import chai from 'chai'; +import { expect, use } from 'chai'; import sinonChai from 'sinon-chai'; import { FragmentState, @@ -16,8 +16,7 @@ import type { FragLoadedData, } from '../../../src/types/events'; -chai.use(sinonChai); -const expect = chai.expect; +use(sinonChai); describe('FragmentTracker', function () { describe('getPartialFragment', function () { diff --git a/tests/unit/controller/gap-controller.ts b/tests/unit/controller/gap-controller.ts index 4d08112655d..1e77052b308 100644 --- a/tests/unit/controller/gap-controller.ts +++ b/tests/unit/controller/gap-controller.ts @@ -1,4 +1,4 @@ -import chai from 'chai'; +import { expect, use } from 'chai'; import sinon from 'sinon'; import sinonChai from 'sinon-chai'; import { State } from '../../../src/controller/base-stream-controller'; @@ -18,8 +18,7 @@ import type { HlsConfig } from '../../../src/config'; import type StreamController from '../../../src/controller/stream-controller'; import type { Fragment, MediaFragment } from '../../../src/loader/fragment'; -chai.use(sinonChai); -const expect = chai.expect; +use(sinonChai); type GapControllerTestable = Omit & { fragmentTracker: FragmentTracker; diff --git a/tests/unit/controller/interstitials-controller.ts b/tests/unit/controller/interstitials-controller.ts index 0e8e2a1cfce..f6fb0e5afcb 100644 --- a/tests/unit/controller/interstitials-controller.ts +++ b/tests/unit/controller/interstitials-controller.ts @@ -1,4 +1,4 @@ -import chai from 'chai'; +import { config, expect, use } from 'chai'; import sinon from 'sinon'; import sinonChai from 'sinon-chai'; import InterstitialsController from '../../../src/controller/interstitials-controller'; @@ -17,9 +17,8 @@ import type { NetworkComponentAPI, } from '../../../src/types/component-api'; -chai.use(sinonChai); -chai.config.truncateThreshold = 0; -const expect = chai.expect; +use(sinonChai); +config.truncateThreshold = 0; type HlsTestable = Omit & { coreComponents: ComponentAPI[]; diff --git a/tests/unit/controller/latency-controller.ts b/tests/unit/controller/latency-controller.ts index 03acefb480d..3f431ed8f2e 100644 --- a/tests/unit/controller/latency-controller.ts +++ b/tests/unit/controller/latency-controller.ts @@ -1,5 +1,5 @@ /* eslint-disable dot-notation */ -import chai from 'chai'; +import { expect, use } from 'chai'; import sinon from 'sinon'; import sinonChai from 'sinon-chai'; import LatencyController from '../../../src/controller/latency-controller'; @@ -8,8 +8,7 @@ import Hls from '../../../src/hls'; import { LevelDetails } from '../../../src/loader/level-details'; import type { LevelUpdatedData } from '../../../src/types/events'; -chai.use(sinonChai); -const expect = chai.expect; +use(sinonChai); // Write to .age and .edge getter stubs for testing LevelDetails in LatencyController interface TestLevelDetails extends LevelDetails { diff --git a/tests/unit/controller/level-controller.ts b/tests/unit/controller/level-controller.ts index d6bf4a37014..df2f3c7cb60 100755 --- a/tests/unit/controller/level-controller.ts +++ b/tests/unit/controller/level-controller.ts @@ -1,4 +1,4 @@ -import chai from 'chai'; +import { expect, use } from 'chai'; import sinon from 'sinon'; import sinonChai from 'sinon-chai'; import LevelController from '../../../src/controller/level-controller'; @@ -26,8 +26,7 @@ import type { MediaPlaylistType, } from '../../../src/types/media-playlist'; -chai.use(sinonChai); -const expect = chai.expect; +use(sinonChai); type LevelControllerTestable = Omit & { onManifestLoaded: (event: string, data: ManifestLoadedData) => void; diff --git a/tests/unit/controller/level-helper.ts b/tests/unit/controller/level-helper.ts index cbc5ae1ab0e..9bfe822e3e0 100644 --- a/tests/unit/controller/level-helper.ts +++ b/tests/unit/controller/level-helper.ts @@ -1,4 +1,4 @@ -import chai from 'chai'; +import { config, expect, use } from 'chai'; import sinon from 'sinon'; import sinonChai from 'sinon-chai'; import AudioStreamController from '../../../src/controller/audio-stream-controller'; @@ -31,9 +31,8 @@ import type { MediaPlaylist, } from '../../../src/types/media-playlist'; -chai.use(sinonChai); -chai.config.truncateThreshold = 0; -const expect = chai.expect; +use(sinonChai); +config.truncateThreshold = 0; type HlsTestable = Omit & { coreComponents: ComponentAPI[]; diff --git a/tests/unit/controller/stream-controller.ts b/tests/unit/controller/stream-controller.ts index 714cfdebdce..0ebffe00515 100644 --- a/tests/unit/controller/stream-controller.ts +++ b/tests/unit/controller/stream-controller.ts @@ -1,5 +1,5 @@ /* eslint-disable dot-notation */ -import chai from 'chai'; +import { expect, use } from 'chai'; import { fakeXhr } from 'nise'; import sinon from 'sinon'; import sinonChai from 'sinon-chai'; @@ -21,8 +21,7 @@ import type { MediaFragment } from '../../../src/loader/fragment'; import type { ParsedMultivariantPlaylist } from '../../../src/loader/m3u8-parser'; import type { LevelAttributes } from '../../../src/types/level'; -chai.use(sinonChai); -const expect = chai.expect; +use(sinonChai); describe('StreamController', function () { let fake; diff --git a/tests/unit/controller/subtitle-stream-controller.ts b/tests/unit/controller/subtitle-stream-controller.ts index b70ae6371c8..cc1876a06ac 100644 --- a/tests/unit/controller/subtitle-stream-controller.ts +++ b/tests/unit/controller/subtitle-stream-controller.ts @@ -1,4 +1,4 @@ -import chai from 'chai'; +import { expect, use } from 'chai'; import sinon from 'sinon'; import sinonChai from 'sinon-chai'; import { State } from '../../../src/controller/base-stream-controller'; @@ -11,8 +11,7 @@ import KeyLoader from '../../../src/loader/key-loader'; import { PlaylistLevelType } from '../../../src/types/loader'; import { AttrList } from '../../../src/utils/attr-list'; -chai.use(sinonChai); -const expect = chai.expect; +use(sinonChai); const mediaMock = { currentTime: 0, diff --git a/tests/unit/controller/subtitle-track-controller.ts b/tests/unit/controller/subtitle-track-controller.ts index 086768a2428..1337470ab96 100644 --- a/tests/unit/controller/subtitle-track-controller.ts +++ b/tests/unit/controller/subtitle-track-controller.ts @@ -1,4 +1,4 @@ -import chai from 'chai'; +import { expect, use } from 'chai'; import sinon from 'sinon'; import sinonChai from 'sinon-chai'; import SubtitleTrackController from '../../../src/controller/subtitle-track-controller'; @@ -18,8 +18,7 @@ import type { MediaPlaylist, } from '../../../src/types/media-playlist'; -chai.use(sinonChai); -const expect = chai.expect; +use(sinonChai); type HlsTestable = Omit< Hls, diff --git a/tests/unit/controller/timeline-controller.ts b/tests/unit/controller/timeline-controller.ts index 8b44f3889a0..9a5ced9d3cc 100644 --- a/tests/unit/controller/timeline-controller.ts +++ b/tests/unit/controller/timeline-controller.ts @@ -1,11 +1,10 @@ -import chai from 'chai'; +import { expect, use } from 'chai'; import sinonChai from 'sinon-chai'; import { TimelineController } from '../../../src/controller/timeline-controller'; import { Events } from '../../../src/events'; import Hls from '../../../src/hls'; -chai.use(sinonChai); -const expect = chai.expect; +use(sinonChai); describe('TimelineController', function () { let timelineController; diff --git a/tests/unit/demuxer/transmuxer.ts b/tests/unit/demuxer/transmuxer.ts index fbedb058052..be16f8143aa 100644 --- a/tests/unit/demuxer/transmuxer.ts +++ b/tests/unit/demuxer/transmuxer.ts @@ -1,4 +1,4 @@ -import chai from 'chai'; +import { expect, use } from 'chai'; import sinon from 'sinon'; import sinonChai from 'sinon-chai'; import { TransmuxConfig, TransmuxState } from '../../../src/demux/transmuxer'; @@ -10,8 +10,7 @@ import { ChunkMetadata } from '../../../src/types/transmuxer'; import type { MediaFragment } from '../../../src/loader/fragment'; import type { TransmuxerResult } from '../../../src/types/transmuxer'; -chai.use(sinonChai); -const expect = chai.expect; +use(sinonChai); describe('TransmuxerInterface tests', function () { let hls; diff --git a/tests/unit/hls.ts b/tests/unit/hls.ts index cf9779e5091..e50856e84ae 100644 --- a/tests/unit/hls.ts +++ b/tests/unit/hls.ts @@ -1,4 +1,4 @@ -import chai from 'chai'; +import { expect, use } from 'chai'; import sinon from 'sinon'; import sinonChai from 'sinon-chai'; import { hlsDefaultConfig } from '../../src/config'; @@ -6,8 +6,7 @@ import { ErrorDetails, ErrorTypes } from '../../src/errors'; import { Events } from '../../src/events'; import Hls from '../../src/hls'; -chai.use(sinonChai); -const expect = chai.expect; +use(sinonChai); describe('Hls', function () { describe('bandwidthEstimate', function () { diff --git a/tests/unit/loader/date-range.ts b/tests/unit/loader/date-range.ts index 69c1385dc88..e2e20892771 100644 --- a/tests/unit/loader/date-range.ts +++ b/tests/unit/loader/date-range.ts @@ -1,9 +1,7 @@ -import chai from 'chai'; +import { expect } from 'chai'; import { DateRange } from '../../../src/loader/date-range'; import { AttrList } from '../../../src/utils/attr-list'; -const expect = chai.expect; - describe('DateRange class', function () { const startDateAndDuration = new AttrList( 'ID="ad1",CLASS="com.apple.hls.interstitial",START-DATE="2020-01-02T21:55:44.000Z",DURATION=15.0,X-ASSET-URI="i.m3u8"', diff --git a/tests/unit/loader/fragment-loader.ts b/tests/unit/loader/fragment-loader.ts index 777c80710df..1357ab87f87 100644 --- a/tests/unit/loader/fragment-loader.ts +++ b/tests/unit/loader/fragment-loader.ts @@ -1,4 +1,4 @@ -import chai from 'chai'; +import { expect, use } from 'chai'; import sinon from 'sinon'; import sinonChai from 'sinon-chai'; import { hlsDefaultConfig, mergeConfig } from '../../../src/config'; @@ -11,8 +11,7 @@ import { PlaylistLevelType } from '../../../src/types/loader'; import { logger } from '../../../src/utils/logger'; import { MockXhr } from '../../mocks/loader.mock'; -chai.use(sinonChai); -const expect = chai.expect; +use(sinonChai); describe('FragmentLoader tests', function () { let fragmentLoader: FragmentLoader; diff --git a/tests/unit/loader/fragment.ts b/tests/unit/loader/fragment.ts index 2b2cf7d4b0b..b2872e3c5dc 100644 --- a/tests/unit/loader/fragment.ts +++ b/tests/unit/loader/fragment.ts @@ -1,11 +1,10 @@ -import chai from 'chai'; +import { expect, use } from 'chai'; import sinonChai from 'sinon-chai'; import { Fragment } from '../../../src/loader/fragment'; import { LevelKey } from '../../../src/loader/level-key'; import { PlaylistLevelType } from '../../../src/types/loader'; -chai.use(sinonChai); -const expect = chai.expect; +use(sinonChai); describe('Fragment class tests', function () { let frag: Fragment; diff --git a/tests/unit/loader/m3u8-parser.ts b/tests/unit/loader/m3u8-parser.ts index 6570cf593fb..dfa2b5a5f19 100644 --- a/tests/unit/loader/m3u8-parser.ts +++ b/tests/unit/loader/m3u8-parser.ts @@ -1,4 +1,4 @@ -import chai from 'chai'; +import { config, expect, use } from 'chai'; import sinonChai from 'sinon-chai'; import { LoadStats } from '../../../src/loader/load-stats'; import M3U8Parser from '../../../src/loader/m3u8-parser'; @@ -9,9 +9,8 @@ import { KeySystemFormats } from '../../../src/utils/mediakeys-helper'; import type { Fragment, Part } from '../../../src/loader/fragment'; import type { LevelKey } from '../../../src/loader/level-key'; -chai.use(sinonChai); -chai.config.truncateThreshold = 0; -const expect = chai.expect; +use(sinonChai); +config.truncateThreshold = 0; describe('M3U8Parser', function () { it('parses empty manifest returns empty array', function () { diff --git a/tests/unit/loader/playlist-loader.ts b/tests/unit/loader/playlist-loader.ts index 8dc8c76705a..1f64adf7d27 100644 --- a/tests/unit/loader/playlist-loader.ts +++ b/tests/unit/loader/playlist-loader.ts @@ -1,4 +1,4 @@ -import chai from 'chai'; +import { expect, use } from 'chai'; import sinon from 'sinon'; import sinonChai from 'sinon-chai'; import LevelController from '../../../src/controller/level-controller'; @@ -14,8 +14,7 @@ import type { PlaylistLoaderContext, } from '../../../src/types/loader'; -chai.use(sinonChai); -const expect = chai.expect; +use(sinonChai); describe('PlaylistLoader tests', function () { const sandbox = sinon.createSandbox(); diff --git a/tests/unit/remux/mp4-remuxer.ts b/tests/unit/remux/mp4-remuxer.ts index 8c6fad26ff3..dd3964f8f15 100644 --- a/tests/unit/remux/mp4-remuxer.ts +++ b/tests/unit/remux/mp4-remuxer.ts @@ -1,4 +1,4 @@ -import chai from 'chai'; +import { expect, use } from 'chai'; import EventEmitter from 'eventemitter3'; import sinonChai from 'sinon-chai'; import { hlsDefaultConfig } from '../../../src/config'; @@ -8,8 +8,7 @@ import type { HlsEventEmitter } from '../../../src/events'; import type { VideoSample } from '../../../src/types/demuxer'; import type { TypeSupported } from '../../../src/utils/codecs'; -chai.use(sinonChai); -const expect = chai.expect; +use(sinonChai); describe('mp4-remuxer', function () { let mp4Remuxer: MP4Remuxer; diff --git a/tests/unit/utils/discontinuities.ts b/tests/unit/utils/discontinuities.ts index 28c86f0b626..7959d810a62 100644 --- a/tests/unit/utils/discontinuities.ts +++ b/tests/unit/utils/discontinuities.ts @@ -1,4 +1,4 @@ -import chai from 'chai'; +import { expect, use } from 'chai'; import sinonChai from 'sinon-chai'; import { Fragment } from '../../../src/loader/fragment'; import { LevelDetails } from '../../../src/loader/level-details'; @@ -13,8 +13,7 @@ import { } from '../../../src/utils/discontinuities'; import type { MediaFragment } from '../../../src/loader/fragment'; -chai.use(sinonChai); -const expect = chai.expect; +use(sinonChai); const mockReferenceFrag = objToFragment({ start: 20, diff --git a/tests/unit/utils/vttparser.ts b/tests/unit/utils/vttparser.ts index bb8638d957f..d88139bcc0f 100644 --- a/tests/unit/utils/vttparser.ts +++ b/tests/unit/utils/vttparser.ts @@ -1,9 +1,8 @@ -import chai from 'chai'; +import { expect, use } from 'chai'; import sinonChai from 'sinon-chai'; import { parseTimeStamp } from '../../../src/utils/vttparser'; -chai.use(sinonChai); -const expect = chai.expect; +use(sinonChai); describe('VTTParser', function () { describe('parseTimeStamp', function () {