История:
В нескольких местах в нашей тестовой кодовой базе мы утверждаем, что разные значения CSS равны ожидаемым значениям. Обычно это свойства стиля color
, background-color
, font
, или cursor
. Этот вопрос связан с цветами.
Вот пример рабочего теста, который в настоящее время проходит:
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)");
});
});
Он проверяет, что кнопка "Загрузить" на веб-сайте AngularJS имеет 0, 116, 204, 1
значение RGBA.
Теперь, если цвет изменится, тест завершится неудачно, например:
Expected 'rgba(0, 116, 204, 1)' to equal 'rgba(255, 116, 204, 1)'.
Проблемы:
-
Как вы можете видеть, прежде всего, само ожидание недостаточно читаемо. Если мы не добавим комментарий рядом с ним, неясно, какой цвет мы ожидаем увидеть.
-
Кроме того, сообщение об ошибке не является информативным. Неясно, каков фактический цвет и какой цвет мы ожидаем увидеть.
Вопрос:
Возможно ли улучшить сам тест, а сообщение об ошибке будет более читаемым и информативным и использовать цветные имена вместо цветовых значений RGB/RGBA?
Желаемое ожидание:
expect(downloadButton).toHaveBackgroundColor("midnight blue");
Требуемые сообщения об ошибках:
Expect 'blue' to equal 'black'
Expect 'dark grey' to equal 'light sea green'
В настоящее время я подумываю о создании настраиваемого набора жасмина, который преобразует значение RGB/RGBA
в пользовательский объект color
, который сохранит исходное значение, а также определит ближайший цвет. color
пакет npm выглядит очень многообещающим.
Поблагодарили бы за любые подсказки.