Uprawnienia, których użytkownik odmawia
Testuj geolokalizację, schowek, kamerę i powiadomienia, gdy użytkownik odmawia. Fixture, który wszystko przyznaje, chowa tę ścieżkę.
Ten wpis jest częścią serii Podstawy Playwright. Jeśli pominąłeś poprzedni, przeczytaj Część 12 — Które przeglądarki naprawdę odpalać.
Wprowadzenie — suite zawsze mówi tak
Bazowy fixture przyznaje geolokalizację, schowek i powiadomienia, bo jeden test potrzebował mapy. Każdy kolejny to dziedziczy. Użytkownika, który klika „Zablokuj”, już nie masz.
Uprawnienia są częścią produktu. Odmowa jest częstą gałęzią.
Domyślnie odmawiaj
Zostaw kontekst w spokoju. Przyznaj uprawnienie tylko w teście, który bada ścieżkę zgody.
test('explains a denied location', async ({ page }) => {
await page.goto('/stores');
await expect(page.getByRole('status')).toHaveText('Location is off. Search by city.');
});
test('centres the map when location is allowed', async ({ context, page }) => {
await context.grantPermissions(['geolocation']);
await context.setGeolocation({ latitude: 52.23, longitude: 21.01 });
await page.goto('/stores');
await expect(page.getByRole('heading', { name: 'Stores near you' })).toBeVisible();
});
grantPermissions jest na kontekst. Grant w beforeEach to sposób, w jaki znika test odmowy.
Ten sam podział dotyczy camera, microphone, clipboard-read i notifications. Jeden test zgody i jeden odmowy na każdą funkcję, która zmienia ekran, gdy odpowiedź brzmi nie.
Co musi zrobić ścieżka odmowy
- powiedzieć w stronie, nie tylko w systemowym monicie, że funkcji nie ma
- dać inną drogę: wpisać miasto, wgrać plik, skopiować kod ręcznie
- nie rzucić nieobsłużonego błędu, który czyści widok
Tekstu systemowego monitu nie sprawdzisz pewnie między silnikami. Sprawdzaj swój UI, gdy uprawnienie jest już odmówione. Playwright startuje z odmową, dopóki jej nie przyznasz. Taki setup jest właściwy.
WebKit to nie Chromium
Safari jest ostrzejsze w tym, które uprawnienia da się ustawić z automatyzacji, szczególnie schowek i kamerę. Jeśli funkcja ma znaczenie na iPhonie, test odmowy należy do plastra @webkit z części 12. Jeśli grantPermissions nie obsługuje tej nazwy, zostaw test odmowy, a zgodę sprawdź ręcznie na urządzeniu. Nie pomijaj obu.
Nie „naprawiaj” odmowy pytaniem w pętli
Test, który przeładowuje stronę, aż uprawnienie się przyklei, dokumentuje ciemny wzorzec. Produkt dostaje jeden monit. Potem zachowaniem jest wyjaśnienie na stronie.
Podsumowanie
Przyznaj uprawnienie w teście, który bada zgodę. Resztę zostaw odmówioną. Sprawdzaj ekran, który zbudowałeś dla użytkownika, który powiedział nie.
Zadanie na ten tydzień: Znajdź jedną funkcję, która woła geolokalizację, schowek albo kamerę. Najpierw dodaj test odmowy. Globalny grant przenieś do jedynego testu zgody.
Następny wpis w serii: Część 14 — Pliki, które użytkownik naprawdę wysyła.