Рубрика «playwright»

Когда я начал делать сервис для наблюдения за ценами на маркетплейсах, первая архитектура казалась очевидной: пользователь передаёт ссылку, сервер открывает страницу, извлекает цену и по расписанию повторяет проверку.

На схеме всё выглядело просто. На практике сервер быстро превратился в самое ненадёжное место системы.

Страницы, которые нормально открывались в обычном браузере, с VPS возвращали 403Читать полностью »

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

Чтобы обновить одно видео, надо открыть OBS, поднять чистый профиль браузера — иначе в кадр лезут закладки и всплывашки. Потом записать дубль, в котором ты ни разу не промахнулся мышкой. Потом порезать в редакторе, наложить подписи. На семь видео уходит день. Через два месяца — опять день.

Предсказуемо, видео перестали обновлять.

Читать полностью »

Задача формулировалась в одно предложение: робот должен сам звонить людям в WhatsApp, проигрывать голосовое приветствие, записывать ответ и присылать оператору расшифровку с вердиктом «да / нет / надо посмотреть руками».

Проблема в том, что официально это невозможно. У WhatsApp нет API для голосовых роботов: Business API умеет шаблонные сообщения, провайдеры на рынке умеют текстовые рассылки, голосовые звонки закрыты наглухо. Готового решения не существует ни за деньги, ни за большие деньги.

Зато существует официальное десктопное приложение, которое звонить умеет. И его можно водить за руку.

Читать полностью »

Под капотом AI Free: три разных способа работы с веб-провайдерами, единый агентный рантайм, память, skills и много кода восстановления после сбоев.


У веб-версий больших языковых моделей есть странное свойство: для человека они доступны в один клик, а для программы между «отправить вопрос» и «получить ответ» внезапно вырастает целая инфраструктура.

Читать полностью »

Пару месяцев назад я попросил агента проверить форму обратной связи после рефакторинга. Через несколько минут получил отчёт: все проверки пройдены, форма работает корректно. Зелёные галочки, уверенный тон.

Я тогда только начинал отдавать тестирование агенту, поэтому работал по схеме «доверяй, но проверяй»: следом прошёл форму руками, с открытой вкладкой Network. Снаружи всё честно: валидация зелёная, кнопка активная, тост «Спасибо!» показывается, сервер отвечает 200. А в payload вместо темы обращения уходит строка [object Object]. Агент проверил всё, кроме того, что реально уходит на сервер.

Читать полностью »

«Нам нужно сделать регрессионное, функциональное и интеграционное тестирование» — а ты автоматизатор и уже задумываешься о том, что попал куда‑то не туда. Или же ты новичок, решивший пойти в тестировщики, смотришь вакансии и видишь, что этих видов тестирования чуть ли не сотня. Как же понять, что от тебя требуют и куда идти? Попробуем разобраться.

Важно сразу сказать, что виды тестирования разделяют по категориям — всё равно что разработчиков делят не только по яп, но и по тому, где этот яп применяется. Ведь java backend разработчик и java mobile разработчик это совершенно разные вещи!

Читать полностью »

В общем, базовая история с аудитом страниц: мы каждый месяц отправляли подрядчику несколько страниц на проверку. Отбирали несколько максимально разных. Если находились проблемы на одной, мы также правили и на однотипных. В месяц так проверяли 4–6 страниц. И тут, из очевидных минусов — оплата подрядчика и ожидание.

Учитывая, что по сути нужно проверять однотипные вещи, вроде title, description, H1 и, например, ошибки в консоли, то я подумал, почему бы не попробовать отдать это агенту. Да, в деталях всё не так просто, но общая процедура каждый раз плюс‑минус одинаковая, а значит, можно настроить сценарий. 

Читать полностью »

Коротко. Сервис открывает чужой сайт и считает штраф по КоАП. Внутри двухуровневая проверка по 22 правилам: дешёвые эвристики на cheerio там, где хватает регулярок, и Claude через российский прокси там, где нужно понять смысл текста. На выходе балл от 0 до 100, список нарушений со статьями КоАП и вилкой штрафа. Законы в основе: 152-ФЗ о персональных данных, 242-ФЗ о локализации, закон о рекламе, закон о защите прав потребителей. Ниже стек, архитектура и грабли. Самая обидная грабля в том, что b в JavaScript не образует границу слова перед кириллицей, и детектор молча слепнет на русском тексте.

Зачем я вообще это делал

Читать полностью »

Один из лучших способов по-настоящему разобраться в инструменте — понять, как он устроен изнутри. С большинством JavaScript-библиотек у меня работает так: мне не нужно заглядывать в исходники, потому что по дизайну API уже можно примерно представить его реализацию. Но API фикстур в Playwright поставил меня в тупик. Минимальный тест выглядит следующим образом:

import { test, expect } from "@playwright/test";

test("basic test", async ({ page }) => {
  await page.goto("https://playwright.dev/");

  await expect(page).toHaveTitle(/Playwright/);
});

В этом примере мы запрашиваем у Playwright фикстуру pageЧитать полностью »

Было время, когда платили разработчикам за создание сайтов. Потом появились конструкторы типа WordPress. И WP с его многочисленными плагинами стал золотым стандартом для создания сайтов и лендингов.

Но пришел OpenClaw и все поменялось. Теперь своим зоопарком лендингов я управляю через TG бота:

  • Убери с сайта X вот это

  • Добавь на сайт Y вот то

  • Поменяй стиль сайта Z на …

  • Создай новую страничку для …

  • Убери все товары/услуги типа “…”

  • Откати последние изменения на сайте XM

  • Замени иконку на сайте XS на более современную

  • Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js