Драматург: тайм-аут страниц администратора в ожидании внутренней навигации после перемещения OIDC — частичная гонка протJavascript

Форум по Javascript
Ответить
Anonymous
 Драматург: тайм-аут страниц администратора в ожидании внутренней навигации после перемещения OIDC — частичная гонка прот

Сообщение Anonymous »

Мы перенесли наш CI из токенов Firebase в OIDC и начали видеть тайм-ауты Playwright на страницах администратора (страницы без администратора в порядке).
Признак
Эта строка зависает в течение 60 секунд на маршрутах администратора, таких как /admin/gear/ (и периодически на /dashboard/):

Код: Выделить всё

await page.locator('nav[data-testid="nav-internal"]').first().waitFor({ state: 'visible' });


Что мы обнаружили
  • Наша внутренняя навигация внедряется с помощью частичного загрузчика
    (/js/includes.js), который запускает событие parts:loaded.
  • Страницы, не предназначенные для администраторов, сначала содержат файл include.js, затем внутренний-nav.js, и
    появляется навигационная панель. Тесты пройдены.
На страницах администратора полностью отсутствовал файл include.js (подтверждено на /admin/index.html, /admin/gear/index.html, /admin-print.html).
  • Только /admin-rsvps.html включал include.js, и это работало.
Соответствующий HTML (раньше)



Соответствующий HTML (работает без прав администратора)



Что мы пробовали/что помогает
Если мы добавим include.js в качестве первого скрипта на страницах администратора (перед внутренним-nav.js и кодом аутентификации), тест пройдет локально.
Мы также создаем обход CI, чтобы избежать реальной аутентификации время:

Код: Выделить всё

window.PW_TEST_MODE = true;
try {
localStorage.setItem('AS_AUTH_BYPASS', '1');
localStorage.setItem('AS_TEST_ROLE', 'admin');
} catch {}


Наш ожидающий Playwright прослушивает частичные файлы:загружается, а затем ждет селектора навигации.
Вопрос
Каков наилучший шаблон, чтобы сделать пользовательский интерфейс с авторизацией детерминированным для Playwright на статических сайтах, которые используют частичный
Варианты, которые я рассматриваю:
  • Сначала загрузите include.js на всех страницах (администраторских и неадминистративных) и сохраните
    скрипты аутентификации/навигации после него (простая гарантия порядка).
  • Немедленно визуализируйте минимальную навигационную оболочку в тестовом режиме (чтобы селектор
    существовал), а затем заполните элементы после auth.
  • Добавьте переключатель тестового жгута (например, ?e2e=1), который полностью пропускает инициализацию Firebase SDK и синхронно публикует макет администратора.
Есть ли здесь рекомендуемый подход (или антишаблон) для обеспечения стабильности E2E с Playwright + auth + Partials? Есть ли какие-либо подводные камни в подходе «сначала оболочка» или лучший способ структурировать начальную загрузку?
Env
  • Playwright 1.48.x
  • Node 20
  • Chromium (без головы)
  • Firebase Хостинг
    (статический сайт)
  • Firebase Auth (настраиваемые утверждения для администратора)
  • CI: GitHub
  • Действия с OIDC


Подробнее здесь: https://stackoverflow.com/questions/797 ... -move-part
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»