From b99402ccd8109bec42d8b71abba9797b9e2cd10a Mon Sep 17 00:00:00 2001 From: fds2610-bot Date: Thu, 13 Aug 2026 13:38:32 +0200 Subject: [PATCH] E2E: Wertpapierkennung je Lauf eindeutig MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Die Spec trug ISIN und WKN fest im Verwendungszweck. Ein Papier wird über seine Kennung wiedergefunden und nicht doppelt angelegt – beim zweiten Lauf gegen dieselbe Datenbank hing der Test damit am Papier des ersten Laufs und prüfte dessen Namen vergeblich. ISIN und WKN tragen jetzt die Marke des Laufs. Der zweite Test bekommt einen Verwendungszweck ohne Wertpapierkennung, wie ihn eine Sparplanrate hat: So entsteht das Papier wirklich unter dem Namen aus der Maske, statt still das des ersten Tests mitzubenutzen – was der Test nun auch prüft. Co-Authored-By: Claude Opus 5 --- tests/e2e/specs/wertpapiergeschaeft.spec.js | 29 ++++++++++++++++----- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/tests/e2e/specs/wertpapiergeschaeft.spec.js b/tests/e2e/specs/wertpapiergeschaeft.spec.js index 16de60d..2a63a78 100644 --- a/tests/e2e/specs/wertpapiergeschaeft.spec.js +++ b/tests/e2e/specs/wertpapiergeschaeft.spec.js @@ -16,9 +16,18 @@ const DEPOT = `E2E WP Depot ${MARKE}` const KAT_GEBUEHR = `E2E Bankprovision ${MARKE}` const KAT_STEUER = `E2E Kapitalertragsteuer ${MARKE}` +// ISIN und WKN tragen die Marke des Laufs: Ein Papier wird über seine Kennung +// wiedergefunden, nicht über den Namen. Feste Kennungen würden den Test beim +// zweiten Lauf an das Papier des ersten hängen. +const ISIN = `LU1834${MARKE}` +const WKN = MARKE + const ZWECK = - 'Depot 0502022353 Wertp.Abrechn. 03.08.2026 WKN LYX01W Gesch.Art KV ' + - 'MUL-AMUN ST600 BANK ETF A ISIN LU1834983477 Ihr Wertpapie' + `Depot 0502022353 Wertp.Abrechn. 03.08.2026 WKN ${WKN} Gesch.Art KV ` + + `MUL-AMUN ST600 BANK ETF A ISIN ${ISIN} Ihr Wertpapie` + +/** Ein Sparplan bringt keine Wertpapierkennung mit – das Papier trägt nur seinen Namen. */ +const ZWECK_SPARPLAN = 'Sparplan Rate 03.08.2026 Dauerauftrag Depot 0502022353' async function anmelden(page) { await page.goto('/login') @@ -54,13 +63,13 @@ async function kategorieAnlegen(page, name) { } /** Eine unzugeordnete Buchung auf dem Girokonto – wie sie der Abruf hinterlässt. */ -async function buchungAnlegen(page, giroId, betrag, empfaenger) { +async function buchungAnlegen(page, giroId, betrag, empfaenger, zweck = ZWECK) { await page.goto(`/konten/${giroId}/buchung`) await page.selectOption('#art', betrag < 0 ? 'ausgabe' : 'einnahme') await page.fill('#datum', '2026-08-03') await page.fill('#betrag', String(Math.abs(betrag)).replace('.', ',')) await page.fill('#empfaenger', empfaenger) - await page.fill('#buchungstext', ZWECK) + await page.fill('#buchungstext', zweck) await page.click('.buchungsmaske button[type="submit"]') await expect(page.locator('.meldung-erfolg')).toBeVisible() } @@ -109,8 +118,8 @@ test.describe('Wertpapiergeschäft aus dem Kontoblatt', () => { await expect(page.locator('#wp_vorgang')).toHaveValue('kauf') // ISIN und WKN stehen im Verwendungszweck und sind schon eingetragen. - await expect(page.locator('#wp_isin')).toHaveValue('LU1834983477') - await expect(page.locator('#wp_wkn')).toHaveValue('LYX01W') + await expect(page.locator('#wp_isin')).toHaveValue(ISIN) + await expect(page.locator('#wp_wkn')).toHaveValue(WKN) await page.fill('#wp_name', `LYXOR ETF ${MARKE}`) await page.selectOption('#wp_art', 'fonds') @@ -153,7 +162,7 @@ test.describe('Wertpapiergeschäft aus dem Kontoblatt', () => { test('Kauf ohne Kosten bleibt eine Umbuchung ins Depot', async ({ page }) => { const empfaenger = `Sparplan ${MARKE}` - await buchungAnlegen(page, giroId, -1000, empfaenger) + await buchungAnlegen(page, giroId, -1000, empfaenger, ZWECK_SPARPLAN) const zeile = page.locator('tr', { hasText: empfaenger }) await zeile.locator('a.zuordnungsfeld').click() @@ -169,5 +178,11 @@ test.describe('Wertpapiergeschäft aus dem Kontoblatt', () => { // Keine Splitbuchung mit einer einzigen Zeile, sondern eine Umbuchung. await expect(page.locator('tr', { hasText: empfaenger }).first()) .toContainText(`[${DEPOT}]`) + + // Ohne Kennung im Verwendungszweck entsteht das Papier unter dem + // Namen, der in der Maske steht. + await page.goto('/wertpapiere/buchungen') + await expect(page.locator('tr', { hasText: `Sparplan-Fonds ${MARKE}` })) + .toContainText('1.000,00') }) })