diff --git a/CHANGELOG.md b/CHANGELOG.md index 395b353a..7034d2b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,17 @@ # Changelog -## v3.1.10 +## v3.1.11 -- News page will no longer open after updating from v3.1.5 or an earlier version. +- Changed the default settings to not open shuffled videos in a new tab. +- Moved the informative text about remaining YouTube API quota to the advanced settings menu. +- Updated the welcome page for a better experience. +## v3.1.10 + +- News page will no longer open after updating from v3.1.5 or an earlier version. + ## v3.1.9 - Temporarily disabled the news feature. diff --git a/README.md b/README.md index facaaf06..57c56c3d 100644 --- a/README.md +++ b/README.md @@ -100,6 +100,15 @@ You may also test the extension with Firefox by running `npm run dev:firefox`, w - Run `npm run dev:android` to load the extension in Firefox for Android. - Your device or emulator should now open Firefox for Android with the extension loaded. +### Testing + +The project contains a number of different test suites, for different environments and purposes: + +- All tests: Run with `npm run test:all` +- Unit tests: Run with `npm test` +- "Compatibility tests": Run with `npm run test:compatibility` and optionally the `:headless` or `:headful` suffixes + - These tests are used to ensure that the extension runs as expected in a live browser environment, for Chrome only at the moment. They utilize `puppeteer` to start a browser session and interact with the extension. + ### Versioning The `manifest.json` contains two version numbers: `version` and `version_name`. diff --git a/package-lock.json b/package-lock.json index b82dae09..abd3ab47 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38,7 +38,7 @@ "sinon": "^15.1.0", "sinon-chrome": "^3.0.1", "web-ext": "^8.0.0", - "webpack": "^5.73.0", + "webpack": "^5.95.0", "webpack-cli": "^4.10.0", "webpack-merge": "^5.8.0" } @@ -3666,17 +3666,6 @@ "@types/json-schema": "*" } }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", @@ -4256,10 +4245,10 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", "dev": true, "license": "MIT", "peerDependencies": { @@ -6970,9 +6959,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.16.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz", - "integrity": "sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "dev": true, "license": "MIT", "dependencies": { @@ -14020,22 +14009,21 @@ } }, "node_modules/webpack": { - "version": "5.91.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", - "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", + "version": "5.95.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz", + "integrity": "sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==", "dev": true, "license": "MIT", "dependencies": { - "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.5", "@webassemblyjs/ast": "^1.12.1", "@webassemblyjs/wasm-edit": "^1.12.1", "@webassemblyjs/wasm-parser": "^1.12.1", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", + "acorn-import-attributes": "^1.9.5", "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.16.0", + "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", diff --git a/package.json b/package.json index 71d3b2ad..8e577593 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "random-youtube-video", - "version": "3.1.10", + "version": "3.1.11", "description": "Customize, shuffle and play random videos from any YouTube channel.", "scripts": { "dev": "concurrently \"npm run dev:chromium\" \"npm run dev:firefox\"", @@ -12,11 +12,11 @@ "build:firefox": "webpack --env browser=firefox --config webpack.prod.cjs", "lint": "eslint --ext .ts,.js --max-warnings=0 . --ignore-path .eslintignore", "lint:firefox": "web-ext lint --source-dir ./dist/firefox", - "test": "c8 --reporter=lcov --reporter=text mocha ./test/testSetup.js ./test/chromeStorage.test.js ./test/**/*.test.js --exclude ./test/compatibility*.test.js --require mocha-suppress-logs", + "test": "c8 --reporter=lcov --reporter=text mocha ./test/testSetup.js ./test/chromeStorage.test.js ./test/*.test.js --require mocha-suppress-logs", "test:all": "npm run test && npm run test:compatibility", - "test:compatibility": "mocha ./test/testSetup.js ./test/compatibility*.test.js --require mocha-suppress-logs --retries 3", - "test:compatibility:headless": "mocha ./test/testSetup.js ./test/compatibility.test.js ./test/compatibility.headless.test.js --require mocha-suppress-logs --retries 3", - "test:compatibility:headful": "mocha ./test/testSetup.js ./test/compatibility.headful.test.js --require mocha-suppress-logs --retries 3" + "test:compatibility": "mocha ./test/testSetup.js ./test/compatibility/compatibility*.test.js --require mocha-suppress-logs --retries 3", + "test:compatibility:headless": "mocha ./test/testSetup.js ./test/compatibility/compatibility.test.js ./test/compatibility/compatibility.headless.test.js --require mocha-suppress-logs --retries 3", + "test:compatibility:headful": "mocha ./test/testSetup.js ./test/compatibility/compatibility.headful.test.js --require mocha-suppress-logs --retries 3" }, "type": "module", "devDependencies": { @@ -46,7 +46,7 @@ "sinon": "^15.1.0", "sinon-chrome": "^3.0.1", "web-ext": "^8.0.0", - "webpack": "^5.73.0", + "webpack": "^5.95.0", "webpack-cli": "^4.10.0", "webpack-merge": "^5.8.0" }, diff --git a/src/config.js b/src/config.js index baa46587..3a30433b 100644 --- a/src/config.js +++ b/src/config.js @@ -9,8 +9,8 @@ export const configSyncDefaults = { // If the user has enabled sharing video ID's with the database "databaseSharingEnabledOption": true, // These properties influence the behavior of the "Shuffle" button - "shuffleOpenInNewTabOption": true, - "shuffleReUseNewTabOption": true, + "shuffleOpenInNewTabOption": false, + "shuffleReUseNewTabOption": false, // 0 = only shorts, 1 = no option set (shorts are included), 2 = ignore shorts "shuffleIgnoreShortsOption": 1, "shuffleOpenAsPlaylistOption": true, diff --git a/src/html/popup/popup.js b/src/html/popup/popup.js index c545657c..c9cb16d0 100644 --- a/src/html/popup/popup.js +++ b/src/html/popup/popup.js @@ -42,7 +42,7 @@ try { // --- Private --- // Get relevant DOM elements function getPopupDomElements() { - /* global reviewDonationDiv, reviewDiv, donationDiv, customApiKeyInputDiv, customApiKeyInputInfoDiv, shuffleNumVideosInPlaylistDiv, channelCustomOptionsDiv, channelCustomOptionsDropdownDiv, forYourInformationDiv, dailyQuotaNoticeDiv */ + /* global reviewDonationDiv, reviewDiv, donationDiv, customApiKeyInputDiv, customApiKeyInputInfoDiv, shuffleNumVideosInPlaylistDiv, channelCustomOptionsDiv, channelCustomOptionsDropdownDiv, forYourInformationDiv, advancedSettingsDiv, dailyQuotaNoticeDiv */ /* eslint no-undef: "error" */ return { body: document.body, @@ -121,15 +121,16 @@ function getPopupDomElements() { // Database sharing: Option toggle dbSharingOptionToggle: document.getElementById("dbSharingOptionToggle"), + // Daily quota notice div + dailyQuotaNoticeDiv: advancedSettingsDiv.children.namedItem("dailyQuotaNoticeDiv"), + // Daily quota notice: Text + dailyQuotaNoticeText: dailyQuotaNoticeDiv.children.namedItem("dailyQuotaNoticeText"), + // FYI - FOR YOUR INFORMATION // FYI div forYourInformationDiv: document.getElementById("forYourInformationDiv"), // FYI: Number of shuffled videos text numberOfShuffledVideosText: forYourInformationDiv.children.namedItem("numberOfShuffledVideosText"), - // FYI: Daily quota notice div - dailyQuotaNoticeDiv: forYourInformationDiv.children.namedItem("dailyQuotaNoticeDiv"), - // Daily quota notice: Text - dailyQuotaNoticeText: dailyQuotaNoticeDiv.children.namedItem("dailyQuotaNoticeText"), // FOOTER // View changelog button diff --git a/static/html/popup.html b/static/html/popup.html index 5f59f1bb..474b13dd 100644 --- a/static/html/popup.html +++ b/static/html/popup.html @@ -200,13 +200,7 @@

Channel settings


- - - -
- -

You have shuffled 0 times until now.

Channel settings
+ + + +
+ +

You have shuffled 0 times until now.

+