我被困在这里进行一个测试,我想验证在滚动浏览由react-window导入的列表组件后,正在渲染不同的项目。该列表位于一个表格组件内,该组件保存了 React 上下文中的滚动位置,这就是我需要测试整个表格组件的原因。
不幸的是,滚动事件似乎没有效果,列表仍然显示相同的项目。
测试看起来像这样:
render(
<SomeProvider>
<Table />
</SomeProvider>
)
describe('Table', () => {
it('scrolls and renders different items', () => {
const table = screen.getByTestId('table')
expect(table.textContent?.includes('item_A')).toBeTruthy() // --> true
expect(table.textContent?.includes('item_Z')).toBeFalsy() // --> true
// getting the list which is a child component of table
const list = table.children[0]
fireEvent.scroll(list, {target: {scrollY: 100}})
expect(table.textContent?.includes('item_A')).toBeFalsy() // --> false
expect(table.textContent?.includes('item_Z')).toBeTruthy() // --> false
})
})
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感激。
我很难理解timeZone该方法中的选项Intl.DateTimeFormat()到底是做什么的。我还找不到这方面的深入资源。任何解释将不胜感激。
背景:我们需要在前端显示后端服务器的时间戳,并且时区偏移存在一些问题。目前,我认为根据本地客户端时间显示正确时间的解决方案如下:
Intl.DateTimeFormat('en-GB', {
hour: 'numeric',
minute: 'numeric',
second: 'numeric',
timeZone: 'GMT'
}).format(timestamp)}
Run Code Online (Sandbox Code Playgroud)
我不完全理解,为什么我需要传递选项 timeZone: 'GMT' 作为“格林威治标准时间”才能在前端获得正确的时间。
我需要为我们的 React Web 应用程序评估最合适的端到端测试库。一项要求是将这个 e2e 库与我们团队目前用于测试的机器人框架集成。
有谁知道是否以及如何将 Cypress 作为 e2e 库与机器人框架集成?
更新:可能的情况是:通过一个简单的一行命令,我们希望执行所有机器人测试并将它们聚合在一个结果文件中。如果有一种方法可以在机器人文件中编写 Cypress e2e 测试,就像使用 Selenium 一样,或者至少触发 cypress JS 测试文件并检索其结果,并以某种方式将它们与其他机器人的结果合并,那就太好了测试
更新 2:我们改用新的机器人库“浏览器”,它就像 Robot Selenium,在各方面都更好。Browser 在底层使用了浏览器自动化工具 Playwright,它是 Puppeteer 的精神继承者。使用浏览器会带来很多乐趣,它的 API 非常直观、通用且强大。所以目前我们完全放弃了将 Robot 与 Cypress 集成的想法。浏览器做得非常出色。