4.6 KiB

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

- 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

  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 |