test-autotest-runner-navigation.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import { TestRunner } from './src/tools/autotest/test-runner.js';
  2. function assert(condition, message) {
  3. if (!condition) throw new Error(message);
  4. }
  5. console.log('\n── AutoTest Runner Navigation Reload ──');
  6. const runner = new TestRunner({ baseUrl: 'https://example.test/app', timeout: 5000 });
  7. runner.firstNavigationDone = true;
  8. const calls = {
  9. goto: 0,
  10. reload: 0,
  11. waitForLoadState: 0,
  12. waitForFunction: 0,
  13. };
  14. runner.page = {
  15. async goto(url) {
  16. calls.goto += 1;
  17. calls.lastGoto = url;
  18. },
  19. async reload() {
  20. calls.reload += 1;
  21. },
  22. async waitForLoadState() {
  23. calls.waitForLoadState += 1;
  24. },
  25. async waitForFunction() {
  26. calls.waitForFunction += 1;
  27. },
  28. };
  29. await runner._navigateTo('https://example.test/app');
  30. await runner._navigateTo('https://example.test/app');
  31. assert(calls.goto === 1, 'first navigation should use page.goto once');
  32. assert(calls.reload === 1, 'second navigation to same URL should reload instead of skipping');
  33. assert(calls.waitForLoadState === 2, 'each navigation should wait for networkidle');
  34. assert(calls.waitForFunction === 2, 'each navigation should wait for interactive elements');
  35. console.log('PASS test-autotest-runner-navigation.js');