fix(frontend): post-QA sprint 2 — i18n + alignment + textarea + action bar layout
- Translate all remaining French strings to English (toasts, buttons, banner) - Fix UsersAdminPage create-form grid alignment: items-start + self-end on button wrapper - Change execution_result from TextInput to TextArea (5 rows, multiline) - Replace split Save RT / Save SOC footers + workflow div with a single sticky action bar (Save Red Team | Save SOC | Mark for review | Close | Delete) - Update Vitest assertions to use English button labels Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -95,54 +95,54 @@ describe('SimulationFormPage — redteam mode (edit existing)', () => {
|
||||
expect(screen.getByLabelText(/Executed at/i)).not.toBeDisabled();
|
||||
});
|
||||
|
||||
it('shows "Marquer en revue" button when status is pending', async () => {
|
||||
it('shows "Mark for review" button when status is pending', async () => {
|
||||
renderWithProviders(<EditPage />, {
|
||||
routerProps: { initialEntries: ['/engagements/42/simulations/7/edit'] },
|
||||
});
|
||||
|
||||
await waitFor(() => {
|
||||
expect(screen.getByRole('button', { name: /Marquer en revue/i })).toBeInTheDocument();
|
||||
expect(screen.getByRole('button', { name: /Mark for review/i })).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
||||
it('does not show "Clôturer" when status is pending', async () => {
|
||||
it('does not show "Close" when status is pending', async () => {
|
||||
renderWithProviders(<EditPage />, {
|
||||
routerProps: { initialEntries: ['/engagements/42/simulations/7/edit'] },
|
||||
});
|
||||
|
||||
await waitFor(() => screen.getByRole('button', { name: /Marquer en revue/i }));
|
||||
expect(screen.queryByRole('button', { name: /Clôturer/i })).toBeNull();
|
||||
await waitFor(() => screen.getByRole('button', { name: /Mark for review/i }));
|
||||
expect(screen.queryByRole('button', { name: /^Close$/i })).toBeNull();
|
||||
});
|
||||
|
||||
it('shows "Marquer en revue" for in_progress status', async () => {
|
||||
it('shows "Mark for review" for in_progress status', async () => {
|
||||
mock.onGet('/simulations/7').reply(200, { ...BASE_SIM, status: 'in_progress' });
|
||||
renderWithProviders(<EditPage />, {
|
||||
routerProps: { initialEntries: ['/engagements/42/simulations/7/edit'] },
|
||||
});
|
||||
|
||||
await waitFor(() => {
|
||||
expect(screen.getByRole('button', { name: /Marquer en revue/i })).toBeInTheDocument();
|
||||
expect(screen.getByRole('button', { name: /Mark for review/i })).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
||||
it('shows "Clôturer" button when status is review_required', async () => {
|
||||
it('shows "Close" button when status is review_required', async () => {
|
||||
mock.onGet('/simulations/7').reply(200, { ...BASE_SIM, status: 'review_required' });
|
||||
renderWithProviders(<EditPage />, {
|
||||
routerProps: { initialEntries: ['/engagements/42/simulations/7/edit'] },
|
||||
});
|
||||
|
||||
await waitFor(() => {
|
||||
expect(screen.getByRole('button', { name: /Clôturer/i })).toBeInTheDocument();
|
||||
expect(screen.getByRole('button', { name: /^Close$/i })).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
||||
it('shows "Supprimer" button for redteam', async () => {
|
||||
it('shows "Delete" button for redteam', async () => {
|
||||
renderWithProviders(<EditPage />, {
|
||||
routerProps: { initialEntries: ['/engagements/42/simulations/7/edit'] },
|
||||
});
|
||||
|
||||
await waitFor(() => {
|
||||
expect(screen.getByRole('button', { name: /Supprimer/i })).toBeInTheDocument();
|
||||
expect(screen.getByRole('button', { name: /^Delete$/i })).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -242,13 +242,13 @@ describe('SimulationFormPage — SOC role + review_required (can edit SOC fields
|
||||
expect(screen.queryByTestId('soc-blocked-banner')).toBeNull();
|
||||
});
|
||||
|
||||
it('shows "Clôturer" for SOC when review_required', async () => {
|
||||
it('shows "Close" for SOC when review_required', async () => {
|
||||
renderWithProviders(<EditPage />, {
|
||||
routerProps: { initialEntries: ['/engagements/42/simulations/7/edit'] },
|
||||
});
|
||||
|
||||
await waitFor(() => {
|
||||
expect(screen.getByRole('button', { name: /Clôturer/i })).toBeInTheDocument();
|
||||
expect(screen.getByRole('button', { name: /^Close$/i })).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user