jest-playwright调用Chromium返回错误日期格式如何解决
问题原因
这不是Bug,是Playwright默认捆绑的Chromium为了压缩体积,裁剪了非默认语言的国际化本地化包,toLocaleDateString 未匹配到对应德语本地化规则时就会 fallback 到ISO日期格式输出。
解决方案
方案1:配置Playwright的地区语言参数(最推荐)
在playwright.config.js中全局配置locale和启动参数,也可以在单测试用例中单独配置:
// playwright.config.js 全局配置 module.exports = defineConfig({ use: { // 全局设置默认地区为德国 locale: 'de-DE', // 给浏览器启动传语言参数 launchOptions: { args: ['--lang=de-DE'] } } })
如果是单独启动浏览器实例的场景,直接在launch时传入即可:
const browser = await chromium.launch({ args: ['--lang=de-DE'], locale: 'de-DE' });
方案2:使用本地完整版本的Chrome/Chromium
如果配置参数后仍不生效,可以指定使用你本地已安装的、带完整语言包的Chrome/Chromium,而不是Playwright自带的精简版本:
const browser = await chromium.launch({ executablePath: '/path/to/your/local/chrome', // 替换为你本地Chrome的实际路径 locale: 'de-DE', args: ['--lang=de-DE'] });
方案3:使用第三方日期库格式化(兼容性最好)
如果不想依赖浏览器的本地化能力,可以直接用dayjs、date-fns等轻量日期库手动格式化,完全规避浏览器环境差异问题:
// 示例用dayjs,先安装dayjs依赖 import dayjs from 'dayjs' const currentdate = dayjs().format('DD.MM.YYYY') console.log(currentdate) // 固定输出 17.09.2021 格式
内容的提问来源于stack exchange,提问作者Tommy
相关产品推荐
相关产品推荐

