fremtind / jokul

Jøkul er et designsystem utviklet av Fremtind.
https://jokul.fremtind.no
MIT License
65 stars 31 forks source link

Optimalisering av kjøretid på visuelle tester #4303

Open ivarni opened 3 days ago

ivarni commented 3 days ago

For å sikre at animasjoner er ferdig før playwright tar skjermbilder til de visuelle regresjonstestene har vi denne kodesnutten

        await this.page.evaluate(() => {
            return new Promise((resolve) => setTimeout(resolve, 600));
        });

Dette bør kunne løses mye bedre fordi

1) Langt fra alle tester trenger å animere noe som helst før skjermbildet tas. 2) Mange av animasjonene er mye kortere enn 600 ms og det Bør Være Mulig for testen å selv kunne avgjøre når animasjonen har kjørt ferdig.

Mulig løsning: Siden det er tester (som feks Modal) som krever litt setup før/etter at man tar et skjermbilde så er det allerede laget et API for å sende inn en before til snapshot-helper metoden

    async snapshots({
        before,
        after,
        selector,
    }: {
        before?: () => Promise<any>;
        after?: () => Promise<any>;
        selector?: string;
    } = {}) {
        await this.setDensity("default");
        await this.setTheme("light");
        await before?.();
        await this.snapshot("default", selector);
        await after?.();

        (...)

    }
}

Håpet er at tester som har animasjon enten selv kan sende inn en default-wait på 600ms i stedet for at vi tar den lille pausen alle steder eller at de (enda bedre) kan bruke before funksjonen til å vente akkurat lenge nok før skjermbildet tas.