Pull to refresh
92
0
Дмитрий Шейко @rglab

senior web developer

Send message
Именно на Каталине и проблема github.com/dsheiko/puppetry/issues/50
Как я отписал, если найти приложение в Finder, Ctrl-Click и выбрать Open — открывается и работает без проблем. На днях проверяли.
Selenium IDE (https://selenium.dev/selenium-ide/)
Плюсы:
— Selenium Grid
— тесты Selenium, выполняются по ощущениям быстрее чем Puppeteer (https://pptr.dev/)
— тесты Selenium можно ранить на различных браузерах
— огромное коммьюнити, проект живет очень давно
Минусы:
— реализован как расширения для браузеров, как по мне, очень неудобно управлять структурой тестов
— из браузера можно записать отдельные сценарии, но серьезные тесты надо писать кодом, что делать с Selenium API сравнительно сложно

Есть и более технические проблемы, поэтому все пытаются создать альтернативы
www.testim.io/blog/selenium-tests-fragile, crossbrowsertesting.com/blog/selenium/problems-selenium-webdriver

Puppetry
— конвертирует тесты в JavaScript (Node.js) — это кому плюс, а кому минус :)
— создание тестов, помимо рекордера, не требует никаких специфических знаний, только CSS (и тут реально много возможностей, что порой удивительно для визуальной среды)
— «печеньки»
  • — тестирование по скриншотам (как PhantomCSS)
  • — тестирование сценариев зависящих от высланных электронных писем
  • — шаблон, выражения, переменные (скажем, можно указать, что значение элемента input будет сгенерированно по критериям docs.puppetry.app/template#faker)
  • — и много других

Есть такой метод page.assignVarRemotely, он стучится по указанному URL, и удерживает ход выполнения тестов на паузе пока не придет ответ сервера удовлетворяющий заданному условию (или timeout). Именно таким образом я тестирую сценарии зависящие от ответа в электроной почте docs.puppetry.app/testing-techniques/testing-emails/example-with-restmail.net.
Т.е. не слазить в БД, но опросить REST метод, который лазит в БД.
Компонентные тесты конечно никто не отменял :) Но они тестируют компоненты в изоляции. Взаимодействие компонентов можно протестировать только сквозными тестами, также как скажем RWD страницы. Некоторые типы тестирования, как скажем CSS regression, теоретически можно применить в компонентных тестах, но не практично.
Unsigned developer. В Security & Privacy/General, там должно быть — Puppetry заблокирован, потому как от неидентифицированного разработчика, открыть все-равно?!
support.apple.com/en-us/HT202491
С моей стороны извинять, что не указал в посте Disclosure. Я думал об этом, но не нашел подходящую форму, чтобы вписывалась в содержание.
Автогенерация — это на стороне приложения. Хотя проблема актуальная — в приложении поменялся layout, тесты упали. В Puppetry цели отделены от тестов (просто пары — переменная: селектор ). Т.е. проще рефакторить. Ну и при разумном использовании CSS (особенно псевдо-селекторов) docs.puppetry.app/tips-and-tricks/embrace-the-power-of-css#lists можно создавать тесты допускающие изменение структуры старницы. Например, селектор a[href*=«facebook.com»] найдет ссылку «Поделиться на Facebook» независимо от ее положения в DOM (ключевое слово в href надо удлинить, если есть другие ссылки с facebook.com). Также как и в Selenium можно адресовать элементы по наличию определенного текста в textNode.
Справедливо. Мы не могли убедить наших тестеров писать автоматизированные тесты годами. Я «вскармливал» им примеры тестов на Selenium, Nightmare, Dalek.js, Zombie.js, все без толку. Потом работал с Puppeteer и понял что можно обойтись без кодирования. Написал Puppetry, предложил им. Т.е. проблемы и почему — дать возможность создавать тесты без написания кода. Впрочем, будучи программистом, я сам пользуюсь Puppetry — так быстрее и удобнее — не надо держать в голове API веб-драйвера, не надо копаться в снипеттах, нет вероятности ошибок кода, которые сложно продебаггить. На Welcome page есть кнопка Demo Project, в нем около десятка примеров для разных типов тестирования. Один из них — полный тест TODOMVC согласно их спецификации github.com/tastejs/todomvc/blob/master/app-spec.md)

Чем отличается от других? Из подобных (www.ranorex.com, www.testcraft.io, ..) платные, что не всем подходит. Попадалось еще web-based решение, которое раннит тесты на своем сервере. Т.е. они не смогут достучаться до stage среды (изолированной от внешнего доступа)

Грабли… В ветке 2.0 реально не хватало групповых операций над записями (copy/paste,delete, enable/disable), для утверждения target.assertVisible не было опций, что на практике не работает (важно как именно виден элемент: доступен, display, visibility, opacity, in viewport). Вообщем все проблемы о которых мне известно исправлены в версии 3.0.0. Разве что повис пока запрос на снипеты (вызов один из другого и выполнение без тестов).
Всмысле? Скажем, мы используем Puppetry для тестирования корпоративного сайта (stage env), порядка 50 тестов, покрывающих RWD, sanity (наличие важных компонентов), exhaustive тесты для форм, бюджет производительности и все сценарии по авторизации/регистрации, включая анализ автоматически высылаемых электронных писем. Есть еще проект электронного магазина, там тестируется Google Analytics, потому как много используется Tracker API для сбора телеметрии Enhanced Ecommerce.

Разные стратегии представлены на примерах в доках:
docs.puppetry.app/testing-techniques
Спасибо за статью — тема актуальная. Однако что касается визуальных эффектов имеет смысл полагаться на
requestAnimationFrame (http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/ или vimeo.com/77905678) вместо timer loops, так как этот именно метод предназначем и оптимизирован для подобных задач.
Относительно совместимости — это вопрос компромиса. Девелопер может по-прежнему писать Vanilla JS и использовать shim (скажем, из MDN коллекции, как это делает Лиа Вероу). Опять же проверка совместимости нынче не проблема. Достойный код должен быть густо покрыт тестами в любом случае. И далее в ходе интеграции (по коммиту) когда тесты будут отправлены на www.browserstack.com/ (скажем через bunyip) — отчет покажет определенно насколько кроссбраузеная поддержка имплементации соответсвует ТЗ. Опять же помним о YAGNI — если поддержки IE6 нет в требованиях, держать код поддержки в проекте точно не лучшая идея
Как вариант: библиотека MicroRequireJs github.com/dsheiko/micro-requirejs.
Очень простое и легкое (1K) решение. Не требует адаптации зависимых модулей:

rjs.define("//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js", "jQuery");
rjs.require(['jQuery"], function(){
   var $ = window.jQuery;
});
Полагаю незаслужено забыты: JavaScript++ (http://jspp.javascript.am/) и JSX (http://jsx.github.com/)
Презентация Marcin Wichary — познавательно. Особенно понравился трюк со спрайтами.
David DeSandro — ни одной новой идеи, старо как Open Source
Jeroen Wijering — на любителя
Anne van Kesteren — доклад построен настолько скучно, что парень (а это парень как оказалось) запомился только тем, что «засветил» яндексовский браузер
Phil Hawksworth — гениально! Не сколько содержание, сколько подача, структура, цитаты, оформление презентации
Peter Nederlof — это ведь тот самый чувак, котрый едва не уснул во время выступления
Rebecca Murphey — «В слайдах последнего докладчика вы НЕ найдёте много полезных советов». Ее выступление было похоже на урок в советской школе: «Children, don't repeat yourselves». Причем, судя по ее примерам, ей как-то не случилось читать что-либо типа Clean Code: A Handbook of Agile Software Craftsmanship, ну или хотя бы The Art of Readable Code
Когда-то бы статья, быть может даже здесь на Хабре. Элегантная иньекция сквозной функциональности. Возможно если поработать с кодом, можно выйти на фреймворк, если вдруг никто этого еще не сделал.

class Event extends ArrayObject {
public function __invoke() {
foreach($this as $callback)
call_user_func_array($callback, func_get_args());
}
}
$test = new Event();

/* Setting up callbacks */
$test[] = function($msg, $txt) {
echo "This is the event!
";
};

$test[] = function($msg, $txt) {
echo "Message: $msg. Text: $txt
";
};

$test[] = function($msg, $txt) {
echo "Works great!
";
};

/* call */
$test("Some message", "Some text");
Ойёй… Могу я как-то откорректировать свой коммент?
Система преподавания языков в СНГ — одна большая проблема. Здесь в Германии теория, синтаксис, грамматика идет никогда не подается сухими конспектами. Теюе подают правила в живом языку в игровой форме и, как бы, между прочим. Задача преподавателя приобщить тебя к языку. Ну да ладно. Что касается английского, по своему опыту могу сказать, для того чтобы понимать нативную речь надо знать хотя бы основные фразовые глаголы и это важно. Да и ваш язык без них будет, как из русского учебника — «корректный», но оторванный от жизни. Для себя я писал простенькую аплкуху demo.dsheiko.com/english для самопроверки
Да еще вот в копилку, XUL читается как /ˈzuːl/ (http://en.wikipedia.org/wiki/XUL)
Американцы обычно произносят MySQL как maɪ ˈsiːkwəl
Не разу не слышал Putty как «пати», все коллеги — англичане, немцы, американцы, итальянцы и т.д. говорят «пути». Хотя на нэйтив-спикеров тоже не стоит ориентироваться, скажем, серверные англичане всегда читают «u» как «у» и потом плучается вместо баджет — буджет и т.д.
1
23 ...

Information

Rating
Does not participate
Location
Frankfurt am Main, Hessen, Германия
Date of birth
Registered
Activity