diff --git a/ui/package-lock.json b/ui/package-lock.json index ad81776463..4d7f2acfa8 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -45,9 +45,9 @@ "date-fns": "^3.6.0", "formik": "^2.4.6", "lucide-react": "^0.542.0", - "react": "^19.1.1", + "react": "^19.2.0", "react-chartjs-2": "^5.3.0", - "react-dom": "^19.1.1", + "react-dom": "^19.2.0", "react-redux": "^9.1.2", "react-router": "^7.8.0", "sonner": "^2.0.7", @@ -60,14 +60,14 @@ }, "devDependencies": { "@babel/preset-typescript": "^7.27.1", - "@playwright/test": "^1.55.0", + "@playwright/test": "^1.56.1", "@tailwindcss/forms": "^0.5.10", "@tailwindcss/vite": "^4.1.13", "@trivago/prettier-plugin-sort-imports": "^5.2.2", "@types/jest": "^29.5.14", "@types/loadable__component": "^5.13.10", "@types/node": "^18.19.122", - "@types/react": "^19.1.11", + "@types/react": "^19.2.2", "@types/react-dom": "^19.1.7", "@types/react-redux": "^7.1.34", "@types/react-router-dom": "^5.3.3", @@ -4265,13 +4265,13 @@ } }, "node_modules/@playwright/test": { - "version": "1.55.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.55.0.tgz", - "integrity": "sha512-04IXzPwHrW69XusN/SIdDdKZBzMfOT9UNT/YiJit/xpy2VuAoB8NHc8Aplb96zsWDddLnbkPL3TsmrS04ZU2xQ==", + "version": "1.56.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.56.1.tgz", + "integrity": "sha512-vSMYtL/zOcFpvJCW71Q/OEGQb7KYBPAdKh35WNSkaZA75JlAO8ED8UN6GUNTm3drWomcbcqRPFqQbLae8yBTdg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright": "1.55.0" + "playwright": "1.56.1" }, "bin": { "playwright": "cli.js" @@ -4280,53 +4280,6 @@ "node": ">=18" } }, - "node_modules/@playwright/test/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/@playwright/test/node_modules/playwright": { - "version": "1.55.0", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.55.0.tgz", - "integrity": "sha512-sdCWStblvV1YU909Xqx0DhOjPZE4/5lJsIS84IfN9dAZfcl/CIZ5O8l3o0j7hPMjDvqoTF8ZUcc+i/GL5erstA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "playwright-core": "1.55.0" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "fsevents": "2.3.2" - } - }, - "node_modules/@playwright/test/node_modules/playwright-core": { - "version": "1.55.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.55.0.tgz", - "integrity": "sha512-GvZs4vU3U5ro2nZpeiwyb0zuFaqb9sUiAJuyrWpcGouD8y9/HLgGbNRjIph7zU9D3hnPaisMl9zG9CgFi/biIg==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "playwright-core": "cli.js" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/@popperjs/core": { "version": "2.11.8", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", @@ -6237,9 +6190,9 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "19.1.11", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.11.tgz", - "integrity": "sha512-lr3jdBw/BGj49Eps7EvqlUaoeA0xpj3pc0RoJkHpYaCHkVK7i28dKyImLQb3JVlqs3aYSXf7qYuWOW/fgZnTXQ==", + "version": "19.2.2", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.2.tgz", + "integrity": "sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==", "license": "MIT", "dependencies": { "csstype": "^3.0.2" @@ -12734,13 +12687,13 @@ } }, "node_modules/playwright": { - "version": "1.55.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.55.1.tgz", - "integrity": "sha512-cJW4Xd/G3v5ovXtJJ52MAOclqeac9S/aGGgRzLabuF8TnIb6xHvMzKIa6JmrRzUkeXJgfL1MhukP0NK6l39h3A==", + "version": "1.56.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.56.1.tgz", + "integrity": "sha512-aFi5B0WovBHTEvpM3DzXTUaeN6eN0qWnTkKx4NQaH4Wvcmc153PdaY2UBdSYKaGYw+UyWXSVyxDUg5DoPEttjw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.55.1" + "playwright-core": "1.56.1" }, "bin": { "playwright": "cli.js" @@ -12753,9 +12706,9 @@ } }, "node_modules/playwright-core": { - "version": "1.55.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.55.1.tgz", - "integrity": "sha512-Z6Mh9mkwX+zxSlHqdr5AOcJnfp+xUWLCt9uKV18fhzA8eyxUd8NUWzAjxUh55RZKSYwDGX0cfaySdhZJGMoJ+w==", + "version": "1.56.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.56.1.tgz", + "integrity": "sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -13085,9 +13038,9 @@ ] }, "node_modules/react": { - "version": "19.1.1", - "resolved": "https://registry.npmjs.org/react/-/react-19.1.1.tgz", - "integrity": "sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", + "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -13103,15 +13056,15 @@ } }, "node_modules/react-dom": { - "version": "19.1.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.1.tgz", - "integrity": "sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", + "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", "license": "MIT", "dependencies": { - "scheduler": "^0.26.0" + "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.1.1" + "react": "^19.2.0" } }, "node_modules/react-fast-compare": { @@ -13652,9 +13605,9 @@ } }, "node_modules/scheduler": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", - "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "license": "MIT" }, "node_modules/semver": { diff --git a/ui/package.json b/ui/package.json index c7c7c3db89..24d779a952 100644 --- a/ui/package.json +++ b/ui/package.json @@ -52,9 +52,9 @@ "date-fns": "^3.6.0", "formik": "^2.4.6", "lucide-react": "^0.542.0", - "react": "^19.1.1", + "react": "^19.2.0", "react-chartjs-2": "^5.3.0", - "react-dom": "^19.1.1", + "react-dom": "^19.2.0", "react-redux": "^9.1.2", "react-router": "^7.8.0", "sonner": "^2.0.7", @@ -67,13 +67,13 @@ }, "devDependencies": { "@babel/preset-typescript": "^7.27.1", - "@playwright/test": "^1.55.0", + "@playwright/test": "^1.56.1", "@tailwindcss/forms": "^0.5.10", "@trivago/prettier-plugin-sort-imports": "^5.2.2", "@types/jest": "^29.5.14", "@types/loadable__component": "^5.13.10", "@types/node": "^18.19.122", - "@types/react": "^19.1.11", + "@types/react": "^19.2.2", "@types/react-dom": "^19.1.7", "@types/react-redux": "^7.1.34", "@types/react-router-dom": "^5.3.3", diff --git a/ui/tests/rollouts.spec.ts b/ui/tests/rollouts.spec.ts index 5f582e9f3e..e449b62d1b 100644 --- a/ui/tests/rollouts.spec.ts +++ b/ui/tests/rollouts.spec.ts @@ -147,19 +147,26 @@ test.describe('Rollouts', () => { await page.getByRole('link', { name: 'test-boolean' }).click(); // Wait for rollouts to be visible before attempting drag - await page.getByTestId('rollout-0').waitFor(); - await page.getByTestId('rollout-1').waitFor(); - - await page + const sourceElement = page .getByTestId('rollout-0') .getByRole('button', { name: 'Rollout' }) - .first() - .dragTo( - page - .getByTestId('rollout-1') - .getByRole('button', { name: 'Rollout' }) - .first() - ); + .first(); + await sourceElement.waitFor(); + await expect(sourceElement).toBeVisible(); + const targetElement = page + .getByTestId('rollout-1') + .getByRole('button', { name: 'Rollout' }) + .first(); + await targetElement.waitFor(); + await expect(targetElement).toBeVisible(); + + // await sourceElement.dragTo(targetElement); + await sourceElement.hover(); + await page.mouse.down(); + await targetElement.hover(); + await page.mouse.up(); + + // update await page.getByRole('button', { name: 'Update' }).click(); await expect(page.getByText('Successfully updated flag')).toBeVisible(); await expect( diff --git a/ui/tests/rules.spec.ts b/ui/tests/rules.spec.ts index 6a5d5c4ffb..58a861cb4f 100644 --- a/ui/tests/rules.spec.ts +++ b/ui/tests/rules.spec.ts @@ -178,16 +178,26 @@ test.describe('Rules', () => { await page.getByRole('link', { name: 'Rules' }).click(); // Wait for rules to be visible before attempting drag - await page.getByTestId('rule-0').waitFor(); - await page.getByTestId('rule-1').waitFor(); - - await page + const sourceElement = page .getByTestId('rule-1') .getByRole('button', { name: 'Rule' }) - .first() - .dragTo( - page.getByTestId('rule-0').getByRole('button', { name: 'Rule' }).first() - ); + .first(); + await sourceElement.waitFor(); + await expect(sourceElement).toBeVisible(); + const targetElement = page + .getByTestId('rule-0') + .getByRole('button', { name: 'Rule' }) + .first(); + await targetElement.waitFor(); + await expect(targetElement).toBeVisible(); + + // await sourceElement.dragTo(targetElement); + await sourceElement.hover(); + await page.mouse.down(); + await targetElement.hover(); + await page.mouse.up(); + + // update await page.getByRole('button', { name: 'Update' }).click(); await expect(page.getByText('Successfully updated flag')).toBeVisible(); await expect(