История:
В нескольких местах нашей тестовой кодовой базы мы утверждаем, что разные значения 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 выглядит очень многообещающе.
Был бы признателен за любые подсказки.
{ 'red': 'rgba(255, 0, 0, 1)', 'blue': 'rgba(0, 0, 255, 1)' }
и не сопоставлял их. - person Michael Radionov   schedule 27.12.2015btn-primary
,btn-cancel
и т. д.) вместо реальных цветов? Спасибо. - person alecxe   schedule 31.12.2015{ 'warning': 'rgb(255, 0, 0, 1)' }
. Это все еще ниже, чем я бы предпочел иметь дело, и «визуальное» тестирование на людях выявляет недостатки макета / рендеринга, которые могут проявляться множеством нелепых способов на разных устройствах, гораздо лучше, чем Selenium. - person user2864740   schedule 31.12.2015