La Storia:valori di colore RGB/RGBA a goniometro
In diversi luoghi nel nostro codice di base di test abbiamo affermano diversi valori CSS per essere uguale a valori attesi. Di solito, questo è un color
, background-color
, font
proprietà di stile correlate o cursor
. Questa domanda riguarda i colori.
Ecco una prova di lavoro di esempio che attualmente passa:
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)");
});
});
Si controlla che il pulsante Download sul sito AngularJS ha 0, 116, 204, 1
valore RGBA.
Ora, se il colore cambierebbe, il test fallirebbe come, ad esempio:
Expected 'rgba(0, 116, 204, 1)' to equal 'rgba(255, 116, 204, 1)'.
I problemi:
Come si può vedere, prima di tutto, il l'aspettativa in sé non è del tutto leggibile. A meno che non ci mettiamo un commento vicino, non è ovvio quale colore ci aspettiamo di vedere.
Inoltre, il messaggio di errore non è informativo. Non è chiaro quale sia il colore reale e quale colore ci aspettiamo di vedere.
la domanda:
E 'possibile migliorare la prova stessa e il messaggio di errore per essere più leggibile e informativo e far funzionare i nomi colore invece di valori di colore RGB/RGBA?
aspettativa desiderata:
expect(downloadButton).toHaveBackgroundColor("midnight blue");
messaggi di errore desiderati:
Expect 'blue' to equal 'black'
Expect 'dark grey' to equal 'light sea green'
Attualmente, sto pensando di fare un matcher gelsomino personalizzata che sarebbe convertire il valore RGB/RGBA
a un oggetto personalizzato Color
che manterrebbe l'origine al valore così come determinare il colore più vicino. color
Il pacchetto npm sembra molto promettente.
Apprezzerei qualsiasi suggerimento.
sono tutti i valori calcolati garantito per corrispondere ai colori con nome? – BoltClock
@BoltClock buona domanda. Vorrei attenermi a qualche mappatura di base tra rgb-> nome colore, e se non si trova un nome di colore, possiamo solo mostrare il valore originale rgb (a) .. Capisco, probabilmente non sarà a prova di proiettile, ma spero pratico. – alecxe
La maggior parte dei siti Web ha il proprio set di colori, di solito non ce ne sono molti, ma dipende da un design. Penserei di creare un semplice oggetto JS come una mappa per i colori e i nomi dei colori, specifici per il tuo sito web, e non fare affidamento su un'altra lib: '{'red': 'rgba (255, 0, 0, 1)', ' blue ':' rgba (0, 0, 255, 1) '} 'e combacia con loro. –