bank-search-no-refresh.spec.ts 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import { test, expect } from '../../utils/test-setup';
  2. test.describe('银行名称搜索 - 无刷新验证', () => {
  3. test.beforeEach(async ({ adminLoginPage, testUsers }) => {
  4. await adminLoginPage.goto();
  5. await adminLoginPage.login(testUsers.admin.username, testUsers.admin.password);
  6. await adminLoginPage.expectLoginSuccess();
  7. });
  8. test('搜索框输入文字并按Enter键后页面不应刷新', async ({ page }) => {
  9. console.log('步骤1: 导航到银行名称管理页面');
  10. await page.goto('http://localhost:8080/admin/bank-names');
  11. // 等待页面加载完成
  12. await page.waitForLoadState('networkidle');
  13. await page.waitForTimeout(2000);
  14. console.log('步骤2: 查找搜索框 (使用 data-testid)');
  15. const searchBox = page.getByTestId('search-input');
  16. await expect(searchBox, '应该找到搜索框').toBeVisible();
  17. console.log('步骤3: 截图 - 初始状态');
  18. await page.screenshot({ path: 'test-results/bank-search-01-initial.png' });
  19. console.log('步骤4: 输入搜索文字"中国"');
  20. await searchBox.fill('中国');
  21. await page.waitForTimeout(500);
  22. console.log('步骤5: 截图 - 输入后');
  23. await page.screenshot({ path: 'test-results/bank-search-02-input.png' });
  24. // 验证输入成功
  25. await expect(searchBox).toHaveValue('中国');
  26. console.log('步骤6: 按Enter键');
  27. await searchBox.press('Enter');
  28. await page.waitForTimeout(2000);
  29. console.log('步骤7: 截图 - 按Enter后');
  30. await page.screenshot({ path: 'test-results/bank-search-03-after-enter.png' });
  31. // 关键验证: 搜索框的值应该保持不变
  32. // 如果页面刷新了,搜索框会被清空
  33. const searchValue = await searchBox.inputValue();
  34. console.log('搜索框当前值:', searchValue);
  35. expect(searchValue).toBe('中国');
  36. console.log('✅ PASS: 搜索值保持不变,页面没有刷新');
  37. // 验证搜索结果显示
  38. console.log('步骤8: 验证搜索结果');
  39. const pageText = await page.textContent('body');
  40. const hasChina = pageText?.includes('中国');
  41. console.log('页面是否包含"中国":', hasChina);
  42. });
  43. test('点击搜索按钮后页面不应刷新', async ({ page }) => {
  44. console.log('步骤1: 导航到银行名称管理页面');
  45. await page.goto('http://localhost:8080/admin/bank-names');
  46. await page.waitForLoadState('networkidle');
  47. await page.waitForTimeout(2000);
  48. console.log('步骤2: 查找搜索框和搜索按钮');
  49. const searchBox = page.getByTestId('search-input');
  50. await expect(searchBox).toBeVisible();
  51. // 查找搜索按钮
  52. const searchButton = page.getByTestId('search-button');
  53. console.log('步骤3: 输入搜索文字"工商"');
  54. await searchBox.fill('工商');
  55. await page.waitForTimeout(500);
  56. console.log('步骤4: 截图 - 输入后');
  57. await page.screenshot({ path: 'test-results/bank-search-04-click-input.png' });
  58. console.log('步骤5: 点击搜索按钮');
  59. const buttonCount = await searchButton.count();
  60. if (buttonCount > 0) {
  61. await searchButton.click();
  62. await page.waitForTimeout(2000);
  63. console.log('步骤6: 截图 - 点击搜索按钮后');
  64. await page.screenshot({ path: 'test-results/bank-search-05-after-click.png' });
  65. const searchValue = await searchBox.inputValue();
  66. console.log('搜索框当前值:', searchValue);
  67. expect(searchValue).toBe('工商');
  68. console.log('✅ PASS: 点击搜索按钮后,搜索值保持不变');
  69. } else {
  70. console.log('⚠️ 未找到搜索按钮,跳过点击测试');
  71. }
  72. });
  73. });