Автоматические тесты рендеринга (reflow/repaint) страниц
JavaScript Python
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
resources
selenium-core
.gitignore
README.txt
__init__.py
all.csv
csv2html.py
parallel_runner.py
reflow_timer.py
run_reflow_timer_all.py
selenium2.py
user_agent_parser.py

README.txt

Установка

1. Ставим JVM
2. Ставим Python
3. Ставим PyYAML
4. Ставим Selenium RC

Убеждаемся, что директории с Python и JAVA у нас в PATH, если нет, добавляем их туда.
Клонируем куда-нибудь собственно сами тесты:
git clone git://github.com/Panya/reflow-tests.git tests

Запуск тестов

Перед запуском нужно перейти в директорию с selenium-rc и запустить его:
java -jar selenium-server-{ver}.jar
, где {ver} это версия дистрибутива Selenium RC (напр. 2.0b3).

Важно: чтобы доверять всем неизвестным сертификатам во время выполнения тестов, нужно добавить к этой команде флаг -trustAllSSLCertificates

Далее, для запуска тестов reflow/repaint переходим в папку с тестами (куда делали clone) и выполняем что-то типа:
./run_reflow_timer_all.py --in_file=some.csv --browser=*firefox

Результат будет сохранен в {имя_инпут_файла}_results.csv (о том, как потом его перевести в более читаемый формат смотри ниже).
Важно: если браузер загружается, но тесты не выполняются, нужно остановить Selenium RC и перезапустить его с флагом -singlewindow. А также выключите блокератор попапов в браузере.

Флаги  
--selenium_host — хост, на котором у нас запущен Selenium RC. По умолчанию: localhost
--selenium_port — порт, на котором у нас висит Selenium RC. По умолчанию: 4444
--in_file — файл в формате csv, с перечислением URL-ов, которые нужно тестить. По умолчанию: all.csv

Пример файла:
1,yandex.ru
2,google.com
3,rambler.ru
4,mail.ru

Важно: не надо указывать протокол в URL (в нашем случае без http://).

--browser — список браузеров, разделенный запятой, в которых нужно тестить. По умолчанию: *firefox,*safari,*googlechrome

Возможные варианты:
*firefox, *googlechrome, *iexploreproxy (только Windows), *opera, *safari (только Mac), '*firefox3 <путь>', '*custom <путь>'

Генерация отчета  
Заходим в директорию с тестами и выполняем:
./csv2html.py {in_file.csv} > {out_file.html}
, где {in_file.csv} — имя файла с результатами тестов, {out_file.html} — собственно имя файла с отчетом в html.

Метрики reflow/repaint  
Первое число в результатах — среднее время выполнения reflow через вариант, используемый в Reflow Meter за пять итераций. [миллисекунды] (Меньше — лучше).
Второе число — среднее время выполнения reflow при скрытии элемента через display:none за пять итераций. [миллисекунды] (Меньше — лучше).
Третье — среднее значение FPS при анимации падающих абсолютно-спозиционированнных блоков. (Больше — лучше).