Die Story:RGB/RGBA-Farbwerte in Protractor
An mehreren Stellen in unserem Test Codebasis behaupten wir verschiedene CSS-Werte mit den erwarteten Werten gleich zu sein. Normalerweise ist dies eine color
, background-color
, font
ähnliche Stileigenschaften oder cursor
. In dieser Frage geht es um den Umgang mit Farben.
Hier ist ein Beispiel Arbeits Test, der zur Zeit passiert:
describe("AngularJS home page", function() {
beforeEach(function() {
browser.get("https://angularjs.org/");
});
it("should show a blue Download button", function() {
var downloadButton = element(by.partialLinkText("Download"));
expect(downloadButton.getCssValue("background-color")).toEqual("rgba(0, 116, 204, 1)");
});
});
Es prüft, ob die Schaltfläche Download auf der Website AngularJS hat 0, 116, 204, 1
Wert RGBA.
Wenn nun die Farbe ändern würde, würde der Test nicht bestehen, wie zum Beispiel:
Expected 'rgba(0, 116, 204, 1)' to equal 'rgba(255, 116, 204, 1)'.
Die Probleme:
Wie Sie zunächst einmal sehen kann, die Erwartung selbst ist nicht gut lesbar. Wenn wir nicht in der Nähe einen Kommentar abgeben, ist nicht klar, welche Farbe wir erwarten.
Auch die Fehlermeldung ist nicht informativ. Es ist unklar, was eine tatsächliche Farbe ist und welche Farbe wir erwarten zu sehen.
Die Frage:
Ist es möglich, den Test selbst und die Fehlermeldung zu verbessern besser lesbar und informativ zu sein und Farbnamen anstelle der Farbe RGB/RGBA-Werte betreiben?
Wunsch Erwartung:
expect(downloadButton).toHaveBackgroundColor("midnight blue");
Wunschfehlermeldungen:
Expect 'blue' to equal 'black'
Expect 'dark grey' to equal 'light sea green'
Derzeit Ich denke über eine benutzerdefinierte Jasmin Matcher machen, die den RGB/RGBA
Wert umwandeln würde zu einem benutzerdefinierten Color
Objekt, das den Ursprung behalten würde al-Wert sowie bestimmen Sie die nächste Farbe. color
npm Paket sieht sehr vielversprechend aus.
Würde mich über irgendwelche Hinweise freuen.
Sind alle berechneten Werte garantiert benannten Farben entsprechen? – BoltClock
@BoltClock gute Frage. Ich würde bei einigen Basiszuordnungen zwischen rgb-> Farbnamen bleiben, und wenn ein Farbname nicht gefunden wird, können wir nur den tatsächlichen Original-rgb (a) -Wert zeigen .. ich verstehe, es wird wahrscheinlich nicht kugelsicher sein, aber ich hoffe praktisch. – alecxe
Die meisten Websites haben ihre eigenen Farben, normalerweise gibt es nicht viele, aber es hängt von einem Design ab. Ich würde daran denken, ein einfaches JS-Objekt als eine Karte für Farben und Farbnamen zu erstellen, die spezifisch für Ihre Website sind und sich nicht auf eine andere Bibliothek verlassen: '{'red': 'rgba (255, 0, 0, 1)', ' blau ':' rgba (0, 0, 255, 1) '} 'und passen Sie gegen sie. –