Zwölf Tests standen auf Rot, ohne dass die Anwendung etwas falsch machte – die Specs prüften den Stand vor dem Umbau. Vier Ursachen lagen darunter: Die Kombobox lässt ihr <select> zwar im Formular stehen, setzt es aber auf hidden; selectOption() wartet darauf vergeblich. Der neue Helfer tests/e2e/specs/hilfen.js bedient das Eingabefeld, tippt die Beschriftung ein und klickt den genau passenden Treffer an – exakt, weil [Depot] sonst auch das [Depot] … des Wertpapiergeschäfts träfe. Seit dem Schnellspeichern ohne Neuladen stehen zwei Erfolgsmeldungen übereinander; gemeint ist die neue, also .last(). Die Adressliste ist seit der Adressverwaltung eine Bearbeitungstabelle: Die Namen stehen in Eingabefeldern, wo toContainText nicht hinsieht. Geprüft wird jetzt der Feldwert – gespeichert wurde die Adresse die ganze Zeit korrekt. Die beiden übrigen Fehlschläge waren Folgefehler: Playwright startet nach jedem Fehlschlag einen frischen Worker, das Spec-Modul wird neu geladen, seine Marke neu gezogen und beforeAll legt leere Konten an. Sie brauchten keine Änderung. 87 Tests grün, und ohne die Timeouts in 2,7 statt 7,1 Minuten. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AQ57wQWZ4xKHcKmp26bzgr
26 lines
1.1 KiB
JavaScript
26 lines
1.1 KiB
JavaScript
// @ts-check
|
||
|
||
/* Gemeinsame Helfer der E2E-Specs. Die Datei endet nicht auf `.spec.js` und
|
||
* wird deshalb nicht als Testdatei eingesammelt. */
|
||
|
||
/**
|
||
* Wählt in einer Typeahead-Kombobox (public/static/kombobox.js) den Eintrag
|
||
* mit genau dieser Beschriftung.
|
||
*
|
||
* Seit dem Umbau steht das ursprüngliche `<select>` nur noch versteckt im
|
||
* Formular; bedient wird das Eingabefeld daneben. `selectOption()` läuft
|
||
* darauf in einen Timeout. Der Helfer tippt die Beschriftung ein – das ist
|
||
* zugleich die Probe auf die Filterung – und klickt den Treffer an.
|
||
*
|
||
* @param {import('@playwright/test').Locator} select das versteckte <select>
|
||
* @param {string} beschriftung Text des Eintrags, exakt
|
||
*/
|
||
async function komboboxWaehlen(select, beschriftung) {
|
||
const kombobox = select.locator('xpath=ancestor::div[contains(@class,"kombobox")][1]')
|
||
|
||
await kombobox.locator('.kombobox-eingabe').fill(beschriftung)
|
||
// Exakt, sonst träfe „[Depot]“ auch das „[Depot] …“ des Wertpapiergeschäfts.
|
||
await kombobox.getByRole('option', { name: beschriftung, exact: true }).click()
|
||
}
|
||
|
||
module.exports = { komboboxWaehlen }
|