DOM-Untersuchungstests können geändert werden

Der Inhalt und die Struktur von HTML, CSS und DOM in Lightning Experience können jederzeit geändert werden und stellen keine stabile API dar. Benutzeroberflächentests, die Komponentenbausteine mit Tools umfassen, beispielsweise Selenium WebDriver, müssen kontinuierlich verwaltet werden. Hierbei handelt es sich nicht um eine Änderung in der Version Spring '19, da die Abwärtskompatibilität mit HTML, CSS und DOM niemals garantiert wurde. Im Rahmen der Änderungen an dieser Version wird nochmals auf die Anfälligkeit dieser Tests hingewiesen, da Lightning Experience analog zu modernen Webstandards kontinuierlich weiterentwickelt wird. Uns ist bewusst, welchen Wert automatisierte Benutzeroberflächentests für unsere Kunden haben und welchen Wartungsaufwand dies für sie nach sich zieht.

Wo: Dieser Versionshinweis gilt für Lightning Experience und Salesforce Classic.

Warum: Teile von Lightning Experience verwenden Lightning-Webkomponenten, die auf dem Web Components-Standard basieren. Dieser Standard umfasst Shadow DOM, welches das Markup, Format und Verhalten einer Komponente vor anderen Komponenten verbirgt. Diese Kapselung bringt Herausforderungen für Benutzeroberflächentests mit sich. Dies ist insbesondere bei Tests der Fall, die von der globalen DOM-Suche abhängig sind oder sich auf interne oder benutzerdefinierte Elemente erstrecken.

Wie: In der Version Spring '19 wurden zum Einführen der Eigenschaft shadowRoot erhebliche Änderungen vorgenommen. Diese kapselt die DOM-Unterstruktur eines Elements ein. Die Eigenschaft shadowRoot wird im DOM als DocumentFragment dargestellt. Darüber hinaus stehen die in dieser DOM-Unterstruktur enthaltenen Elemente nicht mithilfe von herkömmlichen DOM-Abfragemethoden zur Verfügung. Die von Lightning-Webkomponenten angezeigten Elemente enthalten die neue Eigenschaft shadowRoot und diese Elemente werden in normalen DOM-Abfragen ausgeblendet.

Sie sollten Tools für Komponententests zum Testen einzelner Aura-Komponenten und Lightning-Webkomponenten verwenden und die Tools für Benutzeroberflächentests nur für durchgängige Tests verwenden.

Verwenden Sie für Aura-Komponenten Lightning Testing Service zum Schreiben von Einheitentests, um sicherzustellen, dass Ihre Komponenten erwartungsgemäß funktionieren. Lightning Testing Service unterstützt Tests mit standardmäßigen JavaScript-Test-Frameworks und stellt benutzerfreundliche Wrapper zur Verwendung von Jasmine und Mocha bereit.

Verwenden Sie für Lightning-Webkomponenten lwc-jest zum Schreiben von Komponententests.

Für durchgängige Benutzeroberflächentests müssen Sie Ihre vorhandenen Tests für die Shadow DOM-Verwendung anpassen. Die Vorgehensweise dafür unterscheidet sich je nach Tool und ist schnelllebig. Derzeit finden Sie in diesem Artikel ein gutes Beispiel für Selenium WebDriver.