✅(e2e) add test for accessible html export from export modal
checks generated zip contains html and embedded media files Signed-off-by: Cyril <c.gromoff@gmail.com>
This commit is contained in:
@@ -16,12 +16,12 @@ describe('useModuleExport', () => {
|
||||
const Export = await import('@/features/docs/doc-export/');
|
||||
|
||||
expect(Export.default).toBeUndefined();
|
||||
}, 10000);
|
||||
}, 15000);
|
||||
|
||||
it('should load modules when NEXT_PUBLIC_PUBLISH_AS_MIT is false', async () => {
|
||||
process.env.NEXT_PUBLIC_PUBLISH_AS_MIT = 'false';
|
||||
const Export = await import('@/features/docs/doc-export/');
|
||||
|
||||
expect(Export.default).toHaveProperty('ModalExport');
|
||||
});
|
||||
}, 15000);
|
||||
});
|
||||
|
||||
@@ -1,86 +0,0 @@
|
||||
import { render, screen } from '@testing-library/react';
|
||||
import userEvent from '@testing-library/user-event';
|
||||
import React, { Fragment } from 'react';
|
||||
import { beforeEach, describe, expect, vi } from 'vitest';
|
||||
|
||||
import { AbstractAnalytic, Analytics } from '@/libs';
|
||||
import { AppWrapper } from '@/tests/utils';
|
||||
|
||||
import { DocToolBox } from '../components/DocToolBox';
|
||||
|
||||
let flag = true;
|
||||
class TestAnalytic extends AbstractAnalytic {
|
||||
public constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
public Provider() {
|
||||
return <Fragment />;
|
||||
}
|
||||
|
||||
public trackEvent() {}
|
||||
|
||||
public isFeatureFlagActivated(flagName: string): boolean {
|
||||
if (flagName === 'CopyAsHTML') {
|
||||
return flag;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
vi.mock('next/router', async () => ({
|
||||
...(await vi.importActual('next/router')),
|
||||
useRouter: () => ({
|
||||
push: vi.fn(),
|
||||
}),
|
||||
}));
|
||||
|
||||
const doc = {
|
||||
nb_accesses: 1,
|
||||
abilities: {
|
||||
versions_list: true,
|
||||
destroy: true,
|
||||
},
|
||||
};
|
||||
|
||||
beforeEach(() => {
|
||||
Analytics.clearAnalytics();
|
||||
process.env.NEXT_PUBLIC_PUBLISH_AS_MIT = 'false';
|
||||
});
|
||||
|
||||
describe('DocToolBox "Copy as HTML" option', () => {
|
||||
test('renders "Copy as HTML" option when feature flag is enabled', async () => {
|
||||
new TestAnalytic();
|
||||
|
||||
render(<DocToolBox doc={doc as any} />, {
|
||||
wrapper: AppWrapper,
|
||||
});
|
||||
const optionsButton = await screen.findByLabelText(
|
||||
'Open the document options',
|
||||
);
|
||||
await userEvent.click(optionsButton);
|
||||
expect(await screen.findByText('Copy as HTML')).toBeInTheDocument();
|
||||
});
|
||||
|
||||
test('does not render "Copy as HTML" option when feature flag is disabled', async () => {
|
||||
flag = false;
|
||||
new TestAnalytic();
|
||||
|
||||
render(<DocToolBox doc={doc as any} />, {
|
||||
wrapper: AppWrapper,
|
||||
});
|
||||
const optionsButton = screen.getByLabelText('Open the document options');
|
||||
await userEvent.click(optionsButton);
|
||||
expect(screen.queryByText('Copy as HTML')).not.toBeInTheDocument();
|
||||
});
|
||||
|
||||
test('render "Copy as HTML" option when we did not add analytics', async () => {
|
||||
render(<DocToolBox doc={doc as any} />, {
|
||||
wrapper: AppWrapper,
|
||||
});
|
||||
const optionsButton = screen.getByLabelText('Open the document options');
|
||||
await userEvent.click(optionsButton);
|
||||
expect(screen.getByText('Copy as HTML')).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
@@ -42,10 +42,11 @@ describe('DocToolBox - Licence', () => {
|
||||
});
|
||||
const optionsButton = await screen.findByLabelText('Export the document');
|
||||
await userEvent.click(optionsButton);
|
||||
|
||||
// Wait for the export modal to be visible, then assert on its content text.
|
||||
await screen.findByTestId('modal-export-title');
|
||||
expect(
|
||||
await screen.findByText(
|
||||
'Download your document in a .docx, .odt or .pdf format.',
|
||||
),
|
||||
screen.getByText(/Download your document in a .docx, .odt.*format\./i),
|
||||
).toBeInTheDocument();
|
||||
}, 10000);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user