From a34a1173df72646057a0508bbe513a80da1e638e Mon Sep 17 00:00:00 2001 From: Subhash Khileri Date: Thu, 9 Apr 2026 21:06:43 +0530 Subject: [PATCH] chore(e2e): revert otplib version --- docs/changelog.md | 11 +++- package.json | 4 +- src/playwright/helpers/common.ts | 8 +-- yarn.lock | 107 +++++++++++++------------------ 4 files changed, 58 insertions(+), 72 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 24e556c..edf7148 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -2,17 +2,22 @@ All notable changes to this project will be documented in this file. -## [1.1.29] - Current +## [1.1.30] - Current + +### Fixed + +- **Revert `otplib` to 12.0.1**: Reverted otplib v13 upgrade due to breaking API changes affecting consumers. Kept at 12.0.1. + +## [1.1.29] ### Changed - **Pin all dependency versions**: Removed `^` range prefixes from all `dependencies` and `devDependencies` to use exact versions, preventing unexpected breaking changes from transitive updates. `peerDependencies` retain ranges for consumer flexibility. -- **Update all dependencies to latest versions**: Bumped all packages to their latest versions except `@keycloak/keycloak-admin-client` (pinned at 26.5.6 due to broken postinstall in newer versions). Notable major bumps: `eslint` 9→10, `@eslint/js` 9→10, `typescript` 5→6, `otplib` 12→13, `lint-staged` 15→16. +- **Update all dependencies to latest versions**: Bumped all packages to their latest versions except `@keycloak/keycloak-admin-client` (pinned at 26.5.6 due to broken postinstall) and `otplib` (kept at 12.0.1 due to breaking API changes in v13). Notable major bumps: `eslint` 9→10, `@eslint/js` 9→10, `typescript` 5→6, `lint-staged` 15→16. - **Update Yarn to 4.12.0**: Bumped `packageManager` from `yarn@3.8.7` to `yarn@4.12.0`. ### Fixed -- **Migrate `otplib` v12→v13**: Replaced removed `authenticator.generate(secret)` API with `generateSync({ secret })` in `LoginHelper`. - **Preserve error cause in re-thrown errors**: Added `{ cause: error }` to wrapped errors in `RHDHDeployment` and `KubernetesClientHelper` for better error chain traceability. - **Use optional chaining in `APIHelper.deleteUserEntityFromAPI`**: Replaced verbose null check with optional chain (`r.metadata?.uid`). diff --git a/package.json b/package.json index c1d89fe..0c4f23f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@red-hat-developer-hub/e2e-test-utils", - "version": "1.1.29", + "version": "1.1.30", "description": "Test utilities for RHDH E2E tests", "license": "Apache-2.0", "repository": { @@ -114,7 +114,7 @@ "js-yaml": "4.1.1", "lodash.clonedeepwith": "4.5.0", "lodash.mergewith": "4.6.2", - "otplib": "13.4.0", + "otplib": "12.0.1", "prettier": "3.8.1", "proper-lockfile": "4.1.2", "typescript": "6.0.2", diff --git a/src/playwright/helpers/common.ts b/src/playwright/helpers/common.ts index 1dcd6db..bee98ff 100644 --- a/src/playwright/helpers/common.ts +++ b/src/playwright/helpers/common.ts @@ -1,5 +1,5 @@ import { UIhelper } from "./ui-helper.js"; -import { generateSync } from "otplib"; +import { authenticator } from "otplib"; import { test, expect } from "@playwright/test"; import type { Browser, Page, TestInfo } from "@playwright/test"; import { SETTINGS_PAGE_COMPONENTS } from "../page-objects/page-obj.js"; @@ -222,12 +222,12 @@ export class LoginHelper { throw new Error("Invalid User ID"); } - return generateSync({ secret }); + return authenticator.generate(secret); } getGoogle2FAOTP(): string { const secret = process.env.GOOGLE_2FA_SECRET as string; - return generateSync({ secret }); + return authenticator.generate(secret); } async keycloakLogin(username: string, password: string) { @@ -302,7 +302,7 @@ export class LoginHelper { .locator("[type='submit'][value='Sign in']:not(webauthn-status *)") .first() .click({ timeout: 5000 }); - const twofactorcode = generateSync({ secret: twofactor }); + const twofactorcode = authenticator.generate(twofactor); await popup.locator("#app_totp").click({ timeout: 5000 }); await popup.locator("#app_totp").fill(twofactorcode, { timeout: 5000 }); diff --git a/yarn.lock b/yarn.lock index 27cda28..9356924 100644 --- a/yarn.lock +++ b/yarn.lock @@ -250,13 +250,6 @@ __metadata: languageName: node linkType: hard -"@noble/hashes@npm:^2.0.1": - version: 2.0.1 - resolution: "@noble/hashes@npm:2.0.1" - checksum: 10/f4d00e7564eb4ff4e6d16be151dd0e404aede35f91e4372b0a8a6ec888379c1dd1e02c721b480af8e7853bea9637185b5cb9533970c5b77d60c254ead0cfd8f7 - languageName: node - linkType: hard - "@npmcli/agent@npm:^4.0.0": version: 4.0.0 resolution: "@npmcli/agent@npm:4.0.0" @@ -316,60 +309,51 @@ __metadata: languageName: node linkType: hard -"@otplib/core@npm:13.4.0": - version: 13.4.0 - resolution: "@otplib/core@npm:13.4.0" - checksum: 10/2dbb85c7647af1eea7f16eecf38455428499a90e2708720a9e9940b4f5104945b4b45989f222a3eeb6045b269a6dc2b31867ede1462a97b1ce1566a4fcd9e930 - languageName: node - linkType: hard - -"@otplib/hotp@npm:13.4.0": - version: 13.4.0 - resolution: "@otplib/hotp@npm:13.4.0" - dependencies: - "@otplib/core": "npm:13.4.0" - "@otplib/uri": "npm:13.4.0" - checksum: 10/4e2ca48076387a09deb7d11e0b62beddd2bc2f2eb2a3d1a869f77c54519e4ccb674060b99fcc13e210138a673e6fe1eb361ccab9d63a552b8e2ecfa3a1eab33b +"@otplib/core@npm:^12.0.1": + version: 12.0.1 + resolution: "@otplib/core@npm:12.0.1" + checksum: 10/d6edc1ed5fd744cd7be5fd0886e627f42f5e25f9593c7c6f4cac6a64a078eeaf1f70a190f1bb7f366f4eafdabe445c272e699292daa84da266e43b89bb40a6c0 languageName: node linkType: hard -"@otplib/plugin-base32-scure@npm:13.4.0": - version: 13.4.0 - resolution: "@otplib/plugin-base32-scure@npm:13.4.0" +"@otplib/plugin-crypto@npm:^12.0.1": + version: 12.0.1 + resolution: "@otplib/plugin-crypto@npm:12.0.1" dependencies: - "@otplib/core": "npm:13.4.0" - "@scure/base": "npm:^2.0.0" - checksum: 10/8325a8ba6055c6166131cdb8e3b0f473c2a7d8821640d26b43ac15ed7085baf494c4c9950f8ee56bccc07546da5c305d78f93b80b15505d97f15ea55311646f7 + "@otplib/core": "npm:^12.0.1" + checksum: 10/6867c74ee8aca6c2db9670362cf51e44f3648602c39318bf537421242e33f0012a172acd43bbed9a21d706e535dc4c66aff965380673391e9fd74cf685b5b13a languageName: node linkType: hard -"@otplib/plugin-crypto-noble@npm:13.4.0": - version: 13.4.0 - resolution: "@otplib/plugin-crypto-noble@npm:13.4.0" +"@otplib/plugin-thirty-two@npm:^12.0.1": + version: 12.0.1 + resolution: "@otplib/plugin-thirty-two@npm:12.0.1" dependencies: - "@noble/hashes": "npm:^2.0.1" - "@otplib/core": "npm:13.4.0" - checksum: 10/7fdba4f95afb526d2cfcc12009b134ab0142f354b2713cb817715ae88bd432e470a1e3f64bd77901d9b7d22c148b62964d82237dfe4515530d1e1b984f1679f3 + "@otplib/core": "npm:^12.0.1" + thirty-two: "npm:^1.0.2" + checksum: 10/920099e40d3e8c2941291c84c70064c2d86d0d1ed17230d650445d5463340e406bc413ddf2e40c374ddc4ee988ef1e3facacab9b5248b1ff361fd13df52bf88f languageName: node linkType: hard -"@otplib/totp@npm:13.4.0": - version: 13.4.0 - resolution: "@otplib/totp@npm:13.4.0" +"@otplib/preset-default@npm:^12.0.1": + version: 12.0.1 + resolution: "@otplib/preset-default@npm:12.0.1" dependencies: - "@otplib/core": "npm:13.4.0" - "@otplib/hotp": "npm:13.4.0" - "@otplib/uri": "npm:13.4.0" - checksum: 10/c5e8e3696a82cd43ac1b478c2cd47dd63ad30cdb1cdeb575451e50a1905690b59403b8587d22807160e4e9f39c4cb63925675570d68c5f62a936cc1d302bc3a6 + "@otplib/core": "npm:^12.0.1" + "@otplib/plugin-crypto": "npm:^12.0.1" + "@otplib/plugin-thirty-two": "npm:^12.0.1" + checksum: 10/8133231384f6277f77eb8e42ef83bc32a8b01059bef147d1c358d9e9bfd292e1c239f581fe008367a48489dd68952b7ac0948e6c41412fc06079da2c91b71d16 languageName: node linkType: hard -"@otplib/uri@npm:13.4.0": - version: 13.4.0 - resolution: "@otplib/uri@npm:13.4.0" +"@otplib/preset-v11@npm:^12.0.1": + version: 12.0.1 + resolution: "@otplib/preset-v11@npm:12.0.1" dependencies: - "@otplib/core": "npm:13.4.0" - checksum: 10/0bf659e7b81747f76a7d85eddee2d6b7a14368e7c5edcf246d58c56a3bb7c6c7d5a7eacc2dfcda799089c43c397ac75b28d5be2e77147d71caf5ae918756c3ed + "@otplib/core": "npm:^12.0.1" + "@otplib/plugin-crypto": "npm:^12.0.1" + "@otplib/plugin-thirty-two": "npm:^12.0.1" + checksum: 10/367cb09397e617c21ec748d54e920ab43f1c5dfba70cbfd88edf73aecca399cf0c09fefe32518f79c7ee8a06e7058d14b200da378cc7d46af3cac4e22a153e2f languageName: node linkType: hard @@ -411,7 +395,7 @@ __metadata: lodash.clonedeepwith: "npm:4.5.0" lodash.mergewith: "npm:4.6.2" markdown-link-check: "npm:3.14.2" - otplib: "npm:13.4.0" + otplib: "npm:12.0.1" prettier: "npm:3.8.1" proper-lockfile: "npm:4.1.2" typescript: "npm:6.0.2" @@ -422,13 +406,6 @@ __metadata: languageName: unknown linkType: soft -"@scure/base@npm:^2.0.0": - version: 2.0.0 - resolution: "@scure/base@npm:2.0.0" - checksum: 10/8fb86024f22e9c532d513b8df8a672252e58bd5695920ce646162287f0accd38e89cab58722a738b3d247b5dcf7760362ae2d82d502be7e62a555f5d98f8a110 - languageName: node - linkType: hard - "@tootallnate/quickjs-emscripten@npm:^0.23.0": version: 0.23.0 resolution: "@tootallnate/quickjs-emscripten@npm:0.23.0" @@ -2502,17 +2479,14 @@ __metadata: languageName: node linkType: hard -"otplib@npm:13.4.0": - version: 13.4.0 - resolution: "otplib@npm:13.4.0" +"otplib@npm:12.0.1": + version: 12.0.1 + resolution: "otplib@npm:12.0.1" dependencies: - "@otplib/core": "npm:13.4.0" - "@otplib/hotp": "npm:13.4.0" - "@otplib/plugin-base32-scure": "npm:13.4.0" - "@otplib/plugin-crypto-noble": "npm:13.4.0" - "@otplib/totp": "npm:13.4.0" - "@otplib/uri": "npm:13.4.0" - checksum: 10/0c9b81a288f5dec35ab53b621138fe462ebea4a155bd76e019ffbe15d755b5f4931bc405a3a81c22fa3e01a3bc9a00999703608227e51f3e23875c9dd3af00c8 + "@otplib/core": "npm:^12.0.1" + "@otplib/preset-default": "npm:^12.0.1" + "@otplib/preset-v11": "npm:^12.0.1" + checksum: 10/37415ce3706b9e186c1bdcef3e975d96f24bdd97d66dff6148d31a523d4e84009154f7ad1d491afc326d85f7adf0afcd2daf3750b6e6cfc4151d3deec8c0dcc3 languageName: node linkType: hard @@ -3026,6 +3000,13 @@ __metadata: languageName: node linkType: hard +"thirty-two@npm:^1.0.2": + version: 1.0.2 + resolution: "thirty-two@npm:1.0.2" + checksum: 10/f6700b31d16ef942fdc0d14daed8a2f69ea8b60b0e85db8b83adf58d84bbeafe95a17d343ab55efaae571bb5148b62fc0ee12b04781323bf7af7d7e9693eec76 + languageName: node + linkType: hard + "tinyexec@npm:^1.0.4": version: 1.1.1 resolution: "tinyexec@npm:1.1.1"