122 lines
4.6 KiB
Markdown
122 lines
4.6 KiB
Markdown
# Instructions
|
|
|
|
- Following Playwright test failed.
|
|
- Explain why, be concise, respect Playwright best practices.
|
|
- Provide a snippet of code with the fix, if possible.
|
|
|
|
# Test info
|
|
|
|
- Name: atomic_check.spec.js >> Capability demo page atomic tests verification
|
|
- Location: test/atomic_check.spec.js:3:1
|
|
|
|
# Error details
|
|
|
|
```
|
|
Error: expect(received).toContain(expected) // indexOf
|
|
|
|
Expected value: "Framework Is Active"
|
|
Received array: []
|
|
```
|
|
|
|
# Page snapshot
|
|
|
|
```yaml
|
|
- generic [ref=e2]:
|
|
- navigation [ref=e4]
|
|
- generic [ref=e6]:
|
|
- generic [ref=e7]:
|
|
- heading "项目概览" [level=2] [ref=e8]
|
|
- button " 切换主题" [ref=e10] [cursor=pointer]:
|
|
- generic [ref=e11]:
|
|
- text: 切换主题
|
|
- generic [ref=e12]:
|
|
- generic [ref=e13]:
|
|
- heading "Apigo Base Mega Demo" [level=1] [ref=e14]
|
|
- paragraph [ref=e15]: 点击左侧菜单查看不同组件的能力展示
|
|
- generic [ref=e16]:
|
|
- heading "核心原子能力验证 (State singleton)" [level=4] [ref=e17]
|
|
- generic [ref=e18]:
|
|
- generic [ref=e20]:
|
|
- generic [ref=e21]: 1. $text & 样式绑定
|
|
- generic [ref=e22]:
|
|
- paragraph [ref=e23]: Synchronous State Ready
|
|
- button "切换颜色" [ref=e24] [cursor=pointer]
|
|
- generic [ref=e26]:
|
|
- generic [ref=e27]: 2. $if 显式模板判断
|
|
- generic [ref=e28]:
|
|
- generic [ref=e29]: 已激活 ($if="true")
|
|
- button "切换显示状态" [ref=e30] [cursor=pointer]
|
|
- generic [ref=e32]:
|
|
- generic [ref=e33]: 3. $each 循环渲染
|
|
- generic [ref=e35]:
|
|
- generic [ref=e36]: Alpha
|
|
- generic [ref=e37]: Beta
|
|
- generic [ref=e38]: Gamma
|
|
- generic [ref=e40]:
|
|
- generic [ref=e41]: 4. $if 嵌套 $each
|
|
- generic [ref=e42]:
|
|
- generic [ref=e43]:
|
|
- generic [ref=e44]: Red
|
|
- generic [ref=e45]: Green
|
|
- generic [ref=e46]: Blue
|
|
- button "切换外层容器" [ref=e47] [cursor=pointer]
|
|
- generic [ref=e49]:
|
|
- generic [ref=e50]:
|
|
- text: 5. $each 嵌套 $if (奇偶成员过滤)
|
|
- button "仅看奇数项" [ref=e51] [cursor=pointer]
|
|
- generic [ref=e53]:
|
|
- generic [ref=e54]:
|
|
- generic [ref=e55]:
|
|
- text: Alice (1)
|
|
- generic [ref=e56]:
|
|
- generic [ref=e57]:
|
|
- text: Bob (2)
|
|
- generic [ref=e58]:
|
|
- generic [ref=e59]:
|
|
- text: Charlie (3)
|
|
- generic [ref=e60]:
|
|
- generic [ref=e61]:
|
|
- text: David (4)
|
|
- generic [ref=e62]:
|
|
- generic [ref=e63]:
|
|
- text: Eve (5)
|
|
```
|
|
|
|
# Test source
|
|
|
|
```ts
|
|
1 | import { test, expect } from '@playwright/test';
|
|
2 |
|
|
3 | test('Capability demo page atomic tests verification', async ({ page }) => {
|
|
4 | page.on('console', msg => console.log('BROWSER:', msg.text()));
|
|
5 |
|
|
6 | await page.goto('/test/capability.html');
|
|
7 | await page.waitForTimeout(3000);
|
|
8 |
|
|
9 | const testResults = await page.evaluate(() => {
|
|
10 | const getTexts = (sel) => Array.from(document.querySelectorAll(sel)).map(el => el.textContent.trim());
|
|
11 | const getColors = (sel) => Array.from(document.querySelectorAll(sel)).map(el => el.style.color);
|
|
12 |
|
|
13 | return {
|
|
14 | textBinding: getTexts('p[\\$text="DemoState.testTitle"]'),
|
|
15 | textColor: getColors('p[\\$text="DemoState.testTitle"]'),
|
|
16 | ifTrue: document.querySelector('.alert-success')?.textContent.trim(),
|
|
17 | ifFalse: document.querySelector('.alert-danger')?.textContent.trim(),
|
|
18 | eachItems: getTexts('li.list-group-item'),
|
|
19 | nestedEachInIf: getTexts('.badge.bg-primary'),
|
|
20 | nestedIfInEach: getTexts('.bg-white')
|
|
21 | };
|
|
22 | });
|
|
23 |
|
|
24 | console.log('Atomic Test Results:', JSON.stringify(testResults, null, 2));
|
|
25 |
|
|
> 26 | expect(testResults.textBinding).toContain('Framework Is Active');
|
|
| ^ Error: expect(received).toContain(expected) // indexOf
|
|
27 | expect(testResults.ifTrue).toBe('显示的内容 (True)');
|
|
28 | expect(testResults.ifFalse).toBeUndefined();
|
|
29 | expect(testResults.eachItems).toHaveLength(3);
|
|
30 | expect(testResults.nestedEachInIf).toHaveLength(3);
|
|
31 | expect(testResults.nestedIfInEach).toHaveLength(2); // Item A and C are visible
|
|
32 | });
|
|
33 |
|
|
``` |