mirror of
https://github.com/ant-design/ant-design.git
synced 2024-11-27 20:49:53 +08:00
test: support trigger image (#46935)
This commit is contained in:
parent
125ac36647
commit
8ad9f52e46
@ -1,5 +1,7 @@
|
|||||||
import { imageDemoTest } from '../../../tests/shared/imageTest';
|
import { imageDemoTest } from '../../../tests/shared/imageTest';
|
||||||
|
|
||||||
describe('DatePicker image', () => {
|
describe('DatePicker image', () => {
|
||||||
imageDemoTest('date-picker');
|
imageDemoTest('date-picker', {
|
||||||
|
openTriggerClassName: 'ant-picker-dropdown',
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
import { imageDemoTest } from '../../../tests/shared/imageTest';
|
import { imageDemoTest } from '../../../tests/shared/imageTest';
|
||||||
|
|
||||||
describe('TimePicker image', () => {
|
describe('TimePicker image', () => {
|
||||||
imageDemoTest('time-picker');
|
imageDemoTest('time-picker', {
|
||||||
|
openTriggerClassName: 'ant-picker-dropdown',
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
@ -13,6 +13,7 @@ import ReactDOMServer from 'react-dom/server';
|
|||||||
import { App, ConfigProvider, theme } from '../../components';
|
import { App, ConfigProvider, theme } from '../../components';
|
||||||
import { fillWindowEnv } from '../setup';
|
import { fillWindowEnv } from '../setup';
|
||||||
import { render } from '../utils';
|
import { render } from '../utils';
|
||||||
|
import { TriggerMockContext } from './demoTestContext';
|
||||||
|
|
||||||
jest.mock('../../components/grid/hooks/useBreakpoint', () => () => ({}));
|
jest.mock('../../components/grid/hooks/useBreakpoint', () => () => ({}));
|
||||||
|
|
||||||
@ -33,6 +34,7 @@ interface ImageTestOptions {
|
|||||||
onlyViewport?: boolean;
|
onlyViewport?: boolean;
|
||||||
splitTheme?: boolean;
|
splitTheme?: boolean;
|
||||||
ssr?: boolean;
|
ssr?: boolean;
|
||||||
|
openTriggerClassName?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line jest/no-export
|
// eslint-disable-next-line jest/no-export
|
||||||
@ -121,6 +123,8 @@ export default function imageTest(
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const { openTriggerClassName } = options;
|
||||||
|
|
||||||
MockDate.set(dayjs('2016-11-22').valueOf());
|
MockDate.set(dayjs('2016-11-22').valueOf());
|
||||||
page.on('request', onRequestHandle);
|
page.on('request', onRequestHandle);
|
||||||
await page.goto(`file://${process.cwd()}/tests/index.html`);
|
await page.goto(`file://${process.cwd()}/tests/index.html`);
|
||||||
@ -131,12 +135,21 @@ export default function imageTest(
|
|||||||
|
|
||||||
const emptyStyleHolder = doc.createElement('div');
|
const emptyStyleHolder = doc.createElement('div');
|
||||||
|
|
||||||
const element = (
|
let element = (
|
||||||
<StyleProvider cache={cache} container={emptyStyleHolder}>
|
<StyleProvider cache={cache} container={emptyStyleHolder}>
|
||||||
<App>{themedComponent}</App>
|
<App>{themedComponent}</App>
|
||||||
</StyleProvider>
|
</StyleProvider>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Do inject open trigger
|
||||||
|
if (openTriggerClassName) {
|
||||||
|
element = (
|
||||||
|
<TriggerMockContext.Provider value={{ popupVisible: true }}>
|
||||||
|
{element}
|
||||||
|
</TriggerMockContext.Provider>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
let html: string;
|
let html: string;
|
||||||
let styleStr: string;
|
let styleStr: string;
|
||||||
|
|
||||||
@ -154,15 +167,39 @@ export default function imageTest(
|
|||||||
unmount();
|
unmount();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (openTriggerClassName) {
|
||||||
|
styleStr += `<style>
|
||||||
|
.${openTriggerClassName} {
|
||||||
|
position: relative !important;
|
||||||
|
left: 0 !important;
|
||||||
|
top: 0 !important;
|
||||||
|
opacity: 1 !important;
|
||||||
|
display: inline-block !important;
|
||||||
|
}
|
||||||
|
</style>`;
|
||||||
|
}
|
||||||
|
|
||||||
await page.evaluate(
|
await page.evaluate(
|
||||||
(innerHTML, ssrStyle) => {
|
(innerHTML, ssrStyle, triggerClassName) => {
|
||||||
document.querySelector('#root')!.innerHTML = innerHTML;
|
document.querySelector('#root')!.innerHTML = innerHTML;
|
||||||
|
|
||||||
const head = document.querySelector('head')!;
|
const head = document.querySelector('head')!;
|
||||||
head.innerHTML += ssrStyle;
|
head.innerHTML += ssrStyle;
|
||||||
|
|
||||||
|
// Inject open trigger with block style
|
||||||
|
if (triggerClassName) {
|
||||||
|
document.querySelectorAll(`.${triggerClassName}`).forEach((node) => {
|
||||||
|
const blockStart = document.createElement('div');
|
||||||
|
const blockEnd = document.createElement('div');
|
||||||
|
|
||||||
|
node.parentNode!.insertBefore(blockStart, node);
|
||||||
|
node.parentNode!.insertBefore(blockEnd, node.nextSibling);
|
||||||
|
});
|
||||||
|
}
|
||||||
},
|
},
|
||||||
html,
|
html,
|
||||||
styleStr,
|
styleStr,
|
||||||
|
openTriggerClassName,
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!options.onlyViewport) {
|
if (!options.onlyViewport) {
|
||||||
@ -233,6 +270,8 @@ type Options = {
|
|||||||
splitTheme?: boolean | string[];
|
splitTheme?: boolean | string[];
|
||||||
/** Use SSR render instead. Only used when the third part deps component */
|
/** Use SSR render instead. Only used when the third part deps component */
|
||||||
ssr?: boolean;
|
ssr?: boolean;
|
||||||
|
/** Open Trigger to check the popup render */
|
||||||
|
openTriggerClassName?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
// eslint-disable-next-line jest/no-export
|
// eslint-disable-next-line jest/no-export
|
||||||
@ -261,6 +300,7 @@ export function imageDemoTest(component: string, options: Options = {}) {
|
|||||||
options.splitTheme === true ||
|
options.splitTheme === true ||
|
||||||
(Array.isArray(options.splitTheme) && options.splitTheme.some((c) => file.endsWith(c))),
|
(Array.isArray(options.splitTheme) && options.splitTheme.some((c) => file.endsWith(c))),
|
||||||
ssr: options.ssr,
|
ssr: options.ssr,
|
||||||
|
openTriggerClassName: options.openTriggerClassName,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user