diff --git a/components/select/__tests__/image.test.ts b/components/select/__tests__/image.test.ts index 6c364a1ff8..feb6556878 100644 --- a/components/select/__tests__/image.test.ts +++ b/components/select/__tests__/image.test.ts @@ -1,5 +1,7 @@ import { imageDemoTest } from '../../../tests/shared/imageTest'; describe('Select image', () => { - imageDemoTest('select'); + imageDemoTest('select', { + mobile: ['basic.tsx'], + }); }); diff --git a/components/select/style/index.ts b/components/select/style/index.ts index 046cf4f165..74f484938c 100644 --- a/components/select/style/index.ts +++ b/components/select/style/index.ts @@ -72,6 +72,14 @@ const getSearchInputWithoutBorderStyle: GenerateStyle = const genBaseStyle: GenerateStyle = (token) => { const { antCls, componentCls, inputPaddingHorizontalBase, iconCls } = token; + const hoverShowClearStyle: CSSObject = { + [`${componentCls}-clear`]: { + opacity: 1, + background: token.colorBgBase, + borderRadius: '50%', + }, + }; + return { [componentCls]: { ...resetComponent(token), @@ -198,11 +206,8 @@ const genBaseStyle: GenerateStyle = (token) => { }, }, - [`&:hover ${componentCls}-clear`]: { - opacity: 1, - background: token.colorBgBase, - borderRadius: '50%', - }, + '@media(hover:none)': hoverShowClearStyle, + '&:hover': hoverShowClearStyle, }, // ========================= Feedback ========================== diff --git a/jest-puppeteer.config.js b/jest-puppeteer.config.js index ae97f22bd9..591267ec1f 100644 --- a/jest-puppeteer.config.js +++ b/jest-puppeteer.config.js @@ -1,6 +1,7 @@ // jest-puppeteer.config.js module.exports = { launch: { + headless: 'new', ignoreDefaultArgs: ['--disable-extensions'], args: [ // Required for Docker version of Puppeteer diff --git a/package.json b/package.json index f665a15e0e..13f9d02c19 100644 --- a/package.json +++ b/package.json @@ -289,7 +289,7 @@ "prettier": "^3.4.1", "pretty-format": "^29.7.0", "prismjs": "^1.29.0", - "puppeteer": "^24.0.0", + "puppeteer": "^24.7.1", "rc-footer": "^0.6.8", "rc-tween-one": "^3.0.6", "rc-virtual-list": "^3.17.0", diff --git a/tests/shared/imageTest.tsx b/tests/shared/imageTest.tsx index dc3199724a..3f743131b1 100644 --- a/tests/shared/imageTest.tsx +++ b/tests/shared/imageTest.tsx @@ -8,8 +8,8 @@ import fse from 'fs-extra'; import { globSync } from 'glob'; import { JSDOM } from 'jsdom'; import MockDate from 'mockdate'; +import type { HTTPRequest, Viewport } from 'puppeteer'; import rcWarning from 'rc-util/lib/warning'; -import type { HTTPRequest } from 'puppeteer'; import ReactDOMServer from 'react-dom/server'; import { App, ConfigProvider, theme } from '../../components'; @@ -32,6 +32,7 @@ interface ImageTestOptions { onlyViewport?: boolean; ssr?: boolean; openTriggerClassName?: string; + mobile?: boolean; } // eslint-disable-next-line jest/no-export @@ -109,9 +110,14 @@ export default function imageTest( container = doc.querySelector('#root')!; }); - function test(name: string, suffix: string, themedComponent: React.ReactElement) { + function test(name: string, suffix: string, themedComponent: React.ReactElement, mobile = false) { it(name, async () => { - await page.setViewport({ width: 800, height: 600 }); + const sharedViewportConfig: Partial = { + isMobile: mobile, + hasTouch: mobile, + }; + + await page.setViewport({ width: 800, height: 600, ...sharedViewportConfig }); const onRequestHandle = (request: HTTPRequest) => { if (['image'].includes(request.resourceType())) { @@ -166,6 +172,11 @@ export default function imageTest( unmount(); } + // Remove mobile css for hardcode since CI will always think as mobile + if (!mobile) { + styleStr = styleStr.replace(/@media\(hover:\s*none\)/g, '@media(hover:not-valid)'); + } + if (openTriggerClassName) { styleStr += `