Выберите тело: раньше с RSpec / XPath / CSS - PullRequest
0 голосов
/ 12 января 2012

Я пытаюсь написать тест на огурец, который гарантирует отсутствие ошибок в Compass CSS.

Сообщения об ошибках вставляются на страницу с помощью следующего CSS, например ::

body:before {
  white-space: pre;
  font-family: monospace;
  content: "Syntax error: Undefined mixin 'horizontal-list'"; 
}

Итак, я хочу написать шаг, который обеспечивает тело: до того, как содержимое пусто, я пробовал варианты вокруг следующего:

page.should_not have_css("body:before")

но это дает ошибку:

xmlXPathCompOpEval: function before not found 

Кто-нибудь знает, как заполучить: раньше?

1 Ответ

0 голосов
/ 13 января 2012

После долгих поисков я не думаю, что есть способ достать контент: раньше элегантным способом.Тем не менее, у меня есть кое-что, что работает достаточно хорошо для моих целей, поэтому я хотел бы поделиться им:

Then /^I should not see any compass errors$/ do
  page.evaluate_script("document.styleSheets[1].cssRules[0].selectorText == \"body:before\";").should be_false;
end

Вышеприведенные тесты, если первый cssRule имеет selectorText тела: before - что верноесли Compass вставил ошибку на странице.

Некоторые предостережения, если вы хотите использовать вышеупомянутое:

  1. В зависимости от вашего драйвера вам может потребоваться поставить тег @javascript на вашемСценарий (в противном случае вы можете получить исключение NotSupportedByDriverError)
  2. Индекс массива для styleSheets может отличаться для вас (в зависимости от порядка импорта таблиц стилей)
  3. Если вы используете Internet Explorer в качестве вашеготестировать браузер, вам нужно будет изменить JS - см. здесь: https://stackoverflow.com/a/311437/91205
  4. Я натолкнулся на разницу между Safari и Firefox - Safari имеет selectorText как «body :: before», тогда как Firefox имеет «body»: before "(NB: vs: :) у других браузеров могут быть похожие проблемы.

Если кто-нибудь знает лучший способ сделать это, я был бы очень заинтересован - но дляО, выше, остановит любые ошибки Compass, пробирающиеся через!

...