diff --git a/daikoku/javascript/src/components/backoffice/apis/TeamApiSettings.tsx b/daikoku/javascript/src/components/backoffice/apis/TeamApiSettings.tsx
index e0574b4af..26940afa8 100644
--- a/daikoku/javascript/src/components/backoffice/apis/TeamApiSettings.tsx
+++ b/daikoku/javascript/src/components/backoffice/apis/TeamApiSettings.tsx
@@ -20,7 +20,7 @@ export const TeamApiSettings = ({ api, currentTeam }: TeamApiSettingsProps) => {
const { confirm } = useContext(ModalContext);
const navigate = useNavigate();
- const transferOwnership = ({team}: any) => {
+ const transferOwnership = ({team}: {team: ITeamSimple}) => {
Services.transferApiOwnership(team, api.team, api._id).then((r) => {
if (r.notify) {
@@ -41,13 +41,13 @@ export const TeamApiSettings = ({ api, currentTeam }: TeamApiSettingsProps) => {
optionsFrom: Services.teams(currentTeam)
.then((teams) => {
if (!isError(teams)) {
- return sortBy(teams.filter((team: any) => team._id !== api.team), 'name')
+ return sortBy(teams.filter((team) => team._id !== api.team), 'name')
} else {
return []
}
}
),
- transformer: (team: any) => ({
+ transformer: (team: ITeamSimple) => ({
label: team.name,
value: team._id
}),
diff --git a/daikoku/javascript/src/components/backoffice/notifications/SimpleNotification.tsx b/daikoku/javascript/src/components/backoffice/notifications/SimpleNotification.tsx
index bc4bbf70a..2dc214799 100644
--- a/daikoku/javascript/src/components/backoffice/notifications/SimpleNotification.tsx
+++ b/daikoku/javascript/src/components/backoffice/notifications/SimpleNotification.tsx
@@ -409,7 +409,6 @@ export function SimpleNotification(props: ISimpleNotificationProps) {
};
const fromFormatter = (action: any, sender: any) => {
- console.debug({props, sender})
switch (action.__typename) {
case 'ApiAccess':
return `${sender.name}/${props.notification.action.team?.name ?? translate("Unknown team") }`;
diff --git a/daikoku/javascript/src/components/utils/sidebar/RightPanel.tsx b/daikoku/javascript/src/components/utils/sidebar/RightPanel.tsx
index 765d72ea5..ae6bd6d0f 100644
--- a/daikoku/javascript/src/components/utils/sidebar/RightPanel.tsx
+++ b/daikoku/javascript/src/components/utils/sidebar/RightPanel.tsx
@@ -2,11 +2,12 @@ import classNames from 'classnames';
import { useContext, useEffect } from 'react';
import ArrowRight from 'react-feather/dist/icons/arrow-right';
-import { ModalContext } from '../../../contexts';
+import { I18nContext, ModalContext } from '../../../contexts';
export const RightPanel = () => {
const { rightPanelContent, closeRightPanel } = useContext(ModalContext);
+ const { translate } = useContext(I18nContext);
useEffect(() => {
@@ -37,8 +38,11 @@ export const RightPanel = () => {
})}
>
-
-
+
{rightPanelContent?.title}
diff --git a/daikoku/javascript/src/components/utils/sidebar/SideBar.tsx b/daikoku/javascript/src/components/utils/sidebar/SideBar.tsx
index 7956d9565..2a688dcc9 100644
--- a/daikoku/javascript/src/components/utils/sidebar/SideBar.tsx
+++ b/daikoku/javascript/src/components/utils/sidebar/SideBar.tsx
@@ -158,6 +158,7 @@ export const SideBar = () => {
})}
to="/notifications"
title={translate('Access to the notifications')}
+ aria-label={translate('Access to the notifications')}
>
diff --git a/daikoku/javascript/src/locales/en/translation.json b/daikoku/javascript/src/locales/en/translation.json
index 647a68856..7401b0b0d 100644
--- a/daikoku/javascript/src/locales/en/translation.json
+++ b/daikoku/javascript/src/locales/en/translation.json
@@ -1400,5 +1400,6 @@
"subscription.copy.token.label": "token",
"subscription.copy.token.help": "Copy daikoku token, used for retrieve credentials by API",
"setting.panel.reset.confirm.message": "Are you sure you want to reset your organization's data?",
- "api.pricing.created.subscription.panel.title": "Your API Key is Ready"
+ "api.pricing.created.subscription.panel.title": "Your API Key is Ready",
+ "right.panel.close.aria.label": "Close the panel"
}
\ No newline at end of file
diff --git a/daikoku/javascript/src/locales/fr/translation.json b/daikoku/javascript/src/locales/fr/translation.json
index 4b7130f24..899be6044 100644
--- a/daikoku/javascript/src/locales/fr/translation.json
+++ b/daikoku/javascript/src/locales/fr/translation.json
@@ -1401,5 +1401,6 @@
"subscription.copy.token.label": "Jeton",
"subscription.copy.token.help": "Copier le jeton Daikoku, utilisable pour récupérer les identifiants par API",
"setting.panel.reset.confirm.message": "Êtes-vous sûr de vouloir réinitialiser les données de votre organisation ?",
- "api.pricing.created.subscription.panel.title": "Votre clé d'API est prête"
+ "api.pricing.created.subscription.panel.title": "Votre clé d'API est prête",
+ "right.panel.close.aria.label": "Fermer le panneau latéral"
}
\ No newline at end of file
diff --git a/daikoku/javascript/tests/connectedUser.spec.ts b/daikoku/javascript/tests/connectedUser.spec.ts
index 1d9acf811..49d713065 100644
--- a/daikoku/javascript/tests/connectedUser.spec.ts
+++ b/daikoku/javascript/tests/connectedUser.spec.ts
@@ -276,7 +276,8 @@ test('Create & manage API', async ({ page }) => {
await expect(page.getByText('Consumers')).toBeVisible();
await expect(page.locator('div').filter({ hasText: /^Testers$/ })).toBeVisible();
await page.getByText('Consumers').click();
- await expect(page.getByText('API key to plan Free with')).toBeVisible();
+ await page.getByLabel('Close the panel').click();
+ // await expect(page.getByText('API key to plan Free with')).toBeVisible();
await expect(page.getByText('public & manual')).toBeVisible();
await page.getByRole('button', { name: 'Request API key' }).click();
await expect(page.locator('div.team-selection').filter({ hasText: /^Consumers$/ })).toBeVisible();
@@ -294,7 +295,8 @@ test('Create & manage API', async ({ page }) => {
await expect(page.locator('div.team-selection').filter({ hasText: /^Testers$/ })).toBeVisible();
await expect(page.locator('div.team-selection').filter({ hasText: /^Consumers$/ })).toBeHidden();
await page.locator('div.team-selection').filter({ hasText: /^Testers$/ }).click();
- await expect(page.getByText('API key to plan Free with')).toBeVisible();
+ await page.getByLabel('Close the panel').click();
+ // await expect(page.getByText('API key to plan Free with')).toBeVisible();
await page.getByRole('link', { name: 'Access to the notifications' }).click();
await expect(page.getByText('Request subscription to test API 2 for plan')).toBeVisible();
await page.getByRole('link', { name: 'Accept' }).nth(1).click();
@@ -383,6 +385,8 @@ test('aggregation mode', async ({ page, request, context }) => {
await page.locator('.usage-plan__card').filter({ hasText: 'not test plan' }).getByRole('button').click();
await page.locator('div').filter({ hasText: /^Consumers$/ }).click();
// await page.getByRole('button', { name: 'Subscribe with a new api key' }).click();
+
+ await page.getByLabel('Close the panel').click();
await page.getByRole('link', { name: 'APIs list' }).click();
//subscribe second api with aggregation
@@ -392,6 +396,7 @@ test('aggregation mode', async ({ page, request, context }) => {
await page.locator('.team-selection').filter({ hasText: 'Consumer' }).click();
await page.getByRole('button', { name: ' Subscribe using an existing' }).click();
await page.getByText('test API/not test plan').click();
+ await page.getByLabel('Close the panel').click();
//go to subscriptions
await page.getByRole('link', { name: 'APIs list' }).click();
@@ -500,6 +505,7 @@ test('API admin can transfer his own API ownership', async ({ page }) => {
await page.getByRole('heading', { name: 'test API' }).click();
await page.getByRole('link', { name: 'Configure API' }).click();
await page.getByText('Settings').click();
+ await page.locator('h3').filter({ hasText: 'Transfer ownership' }).waitFor({ state: 'visible' })
await page.locator('.react-form-select__input-container').click();
await page.getByText('Consumers', { exact: true }).click();
await page.getByLabel('Please type test API to').fill('test API');
@@ -605,18 +611,17 @@ test('transfer an api subscription', async ({ page, context }) => {
await page.waitForResponse(r => r.url().includes('/api/me/context') && r.status() === 200)
await page.waitForSelector('.apis__pagination')
await page.getByRole('heading', { name: 'test API' }).click();
-
- //tester l'url pour verifier que c'est bien la v2
await page.getByText('Plans').click();
-
await page.locator('div').filter({ hasText: /^fake prod plan/ }).getByRole('button').click();
await page.getByText('Consumers').click();
- await page.getByLabel('Notifications').getByRole('img').nth(1).click();
- await page.locator('.api-subscription__icon').isVisible();
+ // await page.getByLabel('Notifications').getByRole('img').nth(1).click();
+ // await page.locator('.api-subscription__icon').isVisible();
// await page.locator('.api-subscription__infos__value').innerText();
await page.getByRole('button', { name: 'clientId:clientToken' }).click();
const apikey = await page.evaluate(() => navigator.clipboard.readText());
+ //todo: go to subscription page to have menu action
+ await page.goto(`http://localhost:${exposedPort}/consumers/settings/apikeys/test-api/2.0.0`)
await page.locator('#dropdownMenuButton').click();
await page.getByText('Transfer subscription').click();
await page.getByText('Display link').click();
diff --git a/daikoku/javascript/tests/envMode.spec.ts b/daikoku/javascript/tests/envMode.spec.ts
index 9498416c2..0ac35104e 100644
--- a/daikoku/javascript/tests/envMode.spec.ts
+++ b/daikoku/javascript/tests/envMode.spec.ts
@@ -71,6 +71,7 @@ test('aggregation security works', async ({ page, request }) => {
await page.getByText('Environments').click();
await page.locator('.usage-plan__card').filter({ hasText: 'prod' }).getByRole('button').click();
await page.getByText('Consumers').click();
+ await page.getByLabel('Close the panel').click();
await page.getByLabel('APIs list').click();
await page.getByRole('heading', { name: 'Child API' }).click();
@@ -87,9 +88,10 @@ test('aggregation security works', async ({ page, request }) => {
await page.getByRole('button', { name: ' Subscribe using an existing' }).click();
await expect(page.getByText('Parent API/prod')).toBeVisible();
await page.getByText('Parent API/prod').click();
+ await page.getByLabel('Close the panel').click();
// await expect(page.getByText('API key to plan Free without')).toBeVisible();
- await page.getByLabel('APIs list').click();
+ await page.goto(`http://localhost:${exposedPort}/apis`);
await page.getByText('Consumers', { exact: true }).click();
await page.getByText('API keys').click();
await expect(page.getByRole('cell', { name: 'Child API' })).toBeVisible();