[ grably.tech ]Исследование · сентябрь 2026

Браузер под управлением агента: Playwriter, Codex Chrome, Claude in Chrome

Дата прогона
29–30 сентября 2026
Стенд
Browser Lab: 17 комнат, локально
Агенты
Codex GPT-6-Sol и Claude Opus 5.5, оба на reasoning medium
Браузер
Один реальный Chrome; Playwriter · GPT 29.09, остальные 30.09

01Коротко

Playwriter
GPT-6-Sol · CLI 0.7.0
4 / 13 / 0
комнат: готово / частично / блок
подзадач: 96 из 134
18 мин · 22k output
Codex Chrome
GPT-6-Sol · ChatGPT ext 1.26.901 · контракт v2
3 / 14 / 0
комнат: готово / частично / блок
подзадач: 90 из 134
21 мин · 30k output
Playwriter
Opus 5.5 · CLI 0.7.0
8 / 9 / 0
комнат: готово / частично / блок
подзадач: 103 из 133
21 мин · 77k output
Claude in Chrome
Opus 5.5 · Claude ext 1.0.94
3 / 14 / 0
комнат: готово / частично / блок
подзадач: 105 из 147
25 мин · 79k output

02Результаты по комнатам

В ячейке: статус, сколько подзадач комнаты выполнено, и стоимость — минуты · output-токены (с reasoning/thinking). Статус считается по одному правилу из таблиц подзадач в отчётах лейнов, а не по самооценке агента: «готово» — все подзадачи DONE, «блок» — ни одной, иначе «частично». Чем светлее серая ячейка, тем меньше сделано. Подзадача с оговоркой вроде «DONE (partial)» или «DONE / UNAVAILABLE» не засчитывается. Агенты по-разному дробят подзадачи (у Claude in Chrome их 147, у остальных 131–134), поэтому доли сравнимы примерно.

#КомнатаPlaywriter
GPT-6-Sol
Codex Chrome
GPT-6-Sol
Playwriter
Opus 5.5
Claude in Chrome
Opus 5.5
01Сохранённые пароличастично 1/80.5′ · 537частично 2/82.8′ · 5.0kчастично 1/82.2′ · 2.6kчастично 1/80.9′ · 3.6k
02Диалоги и разрешениячастично 8/106.0′ · 6.4kчастично 2/82.3′ · 2.1kчастично 6/81.9′ · 5.9kчастично 7/126.5′ · 10k
03Скриншотыготово 8/80.7′ · 1.1kчастично 6/80.9′ · 1.2kчастично 6/82.7′ · 9.1kчастично 7/81.7′ · 5.7k
04Clipboardчастично 2/81.1′ · 1.6kчастично 6/80.9′ · 981частично 3/80.6′ · 3.7kготово 8/81.4′ · 6.7k
05Файлы и скачиваниячастично 1/80.8′ · 1.3kчастично 3/92.2′ · 2.5kчастично 4/81.6′ · 7.6kчастично 6/112.2′ · 8.4k
06Trusted inputчастично 7/80.5′ · 960частично 6/82.3′ · 4.3kчастично 7/81.6′ · 7.7kчастично 7/92.5′ · 7.9k
07Окна и попапычастично 5/81.6′ · 2.1kчастично 7/81.2′ · 994частично 4/81.4′ · 3.4kчастично 6/82.1′ · 5.9k
08Произвольный JSчастично 6/70.7′ · 1.1kчастично 7/80.8′ · 1.1kготово 8/81.3′ · 4.6kготово 8/81.2′ · 5.0k
09Iframes, workers, shadowготово 8/81.0′ · 1.3kчастично 6/80.7′ · 654готово 8/81.0′ · 4.4kчастично 7/80.7′ · 2.8k
10Activation bridgeготово 7/70.4′ · 333готово 7/71.5′ · 2.2kготово 7/71.6′ · 4.1kготово 11/111.1′ · 4.1k
11Debuggerчастично 7/80.7′ · 815частично 5/81.9′ · 5.8kготово 8/80.6′ · 2.8kчастично 3/80.4′ · 1.6k
12Preloadчастично 6/70.6′ · 897частично 2/70.3′ · 394готово 7/70.5′ · 2.0kчастично 2/70.2′ · 1.3k
13Диагностикачастично 6/80.5′ · 593частично 7/80.6′ · 529готово 8/80.9′ · 4.5kчастично 5/80.6′ · 2.8k
14Ассетычастично 6/70.3′ · 468готово 7/70.4′ · 461готово 7/70.8′ · 3.8kчастично 6/70.5′ · 2.2k
15Запись экраначастично 4/80.6′ · 607частично 3/80.4′ · 383частично 4/80.6′ · 2.6kчастично 6/80.7′ · 2.6k
16Состояние браузерачастично 6/81.1′ · 1.3kчастично 6/80.8′ · 921частично 7/81.1′ · 4.2kчастично 8/101.2′ · 5.0k
17CSP и Trusted Typesготово 8/80.5′ · 738готово 8/80.6′ · 640готово 8/80.7′ · 3.6kчастично 7/80.7′ · 3.2k

Сколько стоила каждая комната

Playwriter · GPT-6-SolCodex Chrome · GPT-6-SolPlaywriter · Opus 5.5Claude in Chrome · Opus 5.5
Минуты на комнату0246Output-токены на комнату05k10k15k01 Сохранённые пароли01 Сохранённые пароли · Playwriter · GPT-6-Sol: 0.5 мин, 537 output01 Сохранённые пароли · Codex Chrome · GPT-6-Sol: 2.8 мин, 5.0k output01 Сохранённые пароли · Playwriter · Opus 5.5: 2.2 мин, 2.6k output01 Сохранённые пароли · Claude in Chrome · Opus 5.5: 0.9 мин, 3.6k output01 Сохранённые пароли · Playwriter · GPT-6-Sol: 0.5 мин, 537 output01 Сохранённые пароли · Codex Chrome · GPT-6-Sol: 2.8 мин, 5.0k output01 Сохранённые пароли · Playwriter · Opus 5.5: 2.2 мин, 2.6k output01 Сохранённые пароли · Claude in Chrome · Opus 5.5: 0.9 мин, 3.6k output02 Диалоги и разрешения02 Диалоги и разрешения · Playwriter · GPT-6-Sol: 6.0 мин, 6.4k output02 Диалоги и разрешения · Codex Chrome · GPT-6-Sol: 2.3 мин, 2.1k output02 Диалоги и разрешения · Playwriter · Opus 5.5: 1.9 мин, 5.9k output02 Диалоги и разрешения · Claude in Chrome · Opus 5.5: 6.5 мин, 10k output02 Диалоги и разрешения · Playwriter · GPT-6-Sol: 6.0 мин, 6.4k output02 Диалоги и разрешения · Codex Chrome · GPT-6-Sol: 2.3 мин, 2.1k output02 Диалоги и разрешения · Playwriter · Opus 5.5: 1.9 мин, 5.9k output02 Диалоги и разрешения · Claude in Chrome · Opus 5.5: 6.5 мин, 10k output03 Скриншоты03 Скриншоты · Playwriter · GPT-6-Sol: 0.7 мин, 1.1k output03 Скриншоты · Codex Chrome · GPT-6-Sol: 0.9 мин, 1.2k output03 Скриншоты · Playwriter · Opus 5.5: 2.7 мин, 9.1k output03 Скриншоты · Claude in Chrome · Opus 5.5: 1.7 мин, 5.7k output03 Скриншоты · Playwriter · GPT-6-Sol: 0.7 мин, 1.1k output03 Скриншоты · Codex Chrome · GPT-6-Sol: 0.9 мин, 1.2k output03 Скриншоты · Playwriter · Opus 5.5: 2.7 мин, 9.1k output03 Скриншоты · Claude in Chrome · Opus 5.5: 1.7 мин, 5.7k output04 Clipboard04 Clipboard · Playwriter · GPT-6-Sol: 1.1 мин, 1.6k output04 Clipboard · Codex Chrome · GPT-6-Sol: 0.9 мин, 981 output04 Clipboard · Playwriter · Opus 5.5: 0.6 мин, 3.7k output04 Clipboard · Claude in Chrome · Opus 5.5: 1.4 мин, 6.7k output04 Clipboard · Playwriter · GPT-6-Sol: 1.1 мин, 1.6k output04 Clipboard · Codex Chrome · GPT-6-Sol: 0.9 мин, 981 output04 Clipboard · Playwriter · Opus 5.5: 0.6 мин, 3.7k output04 Clipboard · Claude in Chrome · Opus 5.5: 1.4 мин, 6.7k output05 Файлы и скачивания05 Файлы и скачивания · Playwriter · GPT-6-Sol: 0.8 мин, 1.3k output05 Файлы и скачивания · Codex Chrome · GPT-6-Sol: 2.2 мин, 2.5k output05 Файлы и скачивания · Playwriter · Opus 5.5: 1.6 мин, 7.6k output05 Файлы и скачивания · Claude in Chrome · Opus 5.5: 2.2 мин, 8.4k output05 Файлы и скачивания · Playwriter · GPT-6-Sol: 0.8 мин, 1.3k output05 Файлы и скачивания · Codex Chrome · GPT-6-Sol: 2.2 мин, 2.5k output05 Файлы и скачивания · Playwriter · Opus 5.5: 1.6 мин, 7.6k output05 Файлы и скачивания · Claude in Chrome · Opus 5.5: 2.2 мин, 8.4k output06 Trusted input06 Trusted input · Playwriter · GPT-6-Sol: 0.5 мин, 960 output06 Trusted input · Codex Chrome · GPT-6-Sol: 2.3 мин, 4.3k output06 Trusted input · Playwriter · Opus 5.5: 1.6 мин, 7.7k output06 Trusted input · Claude in Chrome · Opus 5.5: 2.5 мин, 7.9k output06 Trusted input · Playwriter · GPT-6-Sol: 0.5 мин, 960 output06 Trusted input · Codex Chrome · GPT-6-Sol: 2.3 мин, 4.3k output06 Trusted input · Playwriter · Opus 5.5: 1.6 мин, 7.7k output06 Trusted input · Claude in Chrome · Opus 5.5: 2.5 мин, 7.9k output07 Окна и попапы07 Окна и попапы · Playwriter · GPT-6-Sol: 1.6 мин, 2.1k output07 Окна и попапы · Codex Chrome · GPT-6-Sol: 1.2 мин, 994 output07 Окна и попапы · Playwriter · Opus 5.5: 1.4 мин, 3.4k output07 Окна и попапы · Claude in Chrome · Opus 5.5: 2.1 мин, 5.9k output07 Окна и попапы · Playwriter · GPT-6-Sol: 1.6 мин, 2.1k output07 Окна и попапы · Codex Chrome · GPT-6-Sol: 1.2 мин, 994 output07 Окна и попапы · Playwriter · Opus 5.5: 1.4 мин, 3.4k output07 Окна и попапы · Claude in Chrome · Opus 5.5: 2.1 мин, 5.9k output08 Произвольный JS08 Произвольный JS · Playwriter · GPT-6-Sol: 0.7 мин, 1.1k output08 Произвольный JS · Codex Chrome · GPT-6-Sol: 0.8 мин, 1.1k output08 Произвольный JS · Playwriter · Opus 5.5: 1.3 мин, 4.6k output08 Произвольный JS · Claude in Chrome · Opus 5.5: 1.2 мин, 5.0k output08 Произвольный JS · Playwriter · GPT-6-Sol: 0.7 мин, 1.1k output08 Произвольный JS · Codex Chrome · GPT-6-Sol: 0.8 мин, 1.1k output08 Произвольный JS · Playwriter · Opus 5.5: 1.3 мин, 4.6k output08 Произвольный JS · Claude in Chrome · Opus 5.5: 1.2 мин, 5.0k output09 Iframes, workers, shadow09 Iframes, workers, shadow · Playwriter · GPT-6-Sol: 1.0 мин, 1.3k output09 Iframes, workers, shadow · Codex Chrome · GPT-6-Sol: 0.7 мин, 654 output09 Iframes, workers, shadow · Playwriter · Opus 5.5: 1.0 мин, 4.4k output09 Iframes, workers, shadow · Claude in Chrome · Opus 5.5: 0.7 мин, 2.8k output09 Iframes, workers, shadow · Playwriter · GPT-6-Sol: 1.0 мин, 1.3k output09 Iframes, workers, shadow · Codex Chrome · GPT-6-Sol: 0.7 мин, 654 output09 Iframes, workers, shadow · Playwriter · Opus 5.5: 1.0 мин, 4.4k output09 Iframes, workers, shadow · Claude in Chrome · Opus 5.5: 0.7 мин, 2.8k output10 Activation bridge10 Activation bridge · Playwriter · GPT-6-Sol: 0.4 мин, 333 output10 Activation bridge · Codex Chrome · GPT-6-Sol: 1.5 мин, 2.2k output10 Activation bridge · Playwriter · Opus 5.5: 1.6 мин, 4.1k output10 Activation bridge · Claude in Chrome · Opus 5.5: 1.1 мин, 4.1k output10 Activation bridge · Playwriter · GPT-6-Sol: 0.4 мин, 333 output10 Activation bridge · Codex Chrome · GPT-6-Sol: 1.5 мин, 2.2k output10 Activation bridge · Playwriter · Opus 5.5: 1.6 мин, 4.1k output10 Activation bridge · Claude in Chrome · Opus 5.5: 1.1 мин, 4.1k output11 Debugger11 Debugger · Playwriter · GPT-6-Sol: 0.7 мин, 815 output11 Debugger · Codex Chrome · GPT-6-Sol: 1.9 мин, 5.8k output11 Debugger · Playwriter · Opus 5.5: 0.6 мин, 2.8k output11 Debugger · Claude in Chrome · Opus 5.5: 0.4 мин, 1.6k output11 Debugger · Playwriter · GPT-6-Sol: 0.7 мин, 815 output11 Debugger · Codex Chrome · GPT-6-Sol: 1.9 мин, 5.8k output11 Debugger · Playwriter · Opus 5.5: 0.6 мин, 2.8k output11 Debugger · Claude in Chrome · Opus 5.5: 0.4 мин, 1.6k output12 Preload12 Preload · Playwriter · GPT-6-Sol: 0.6 мин, 897 output12 Preload · Codex Chrome · GPT-6-Sol: 0.3 мин, 394 output12 Preload · Playwriter · Opus 5.5: 0.5 мин, 2.0k output12 Preload · Claude in Chrome · Opus 5.5: 0.2 мин, 1.3k output12 Preload · Playwriter · GPT-6-Sol: 0.6 мин, 897 output12 Preload · Codex Chrome · GPT-6-Sol: 0.3 мин, 394 output12 Preload · Playwriter · Opus 5.5: 0.5 мин, 2.0k output12 Preload · Claude in Chrome · Opus 5.5: 0.2 мин, 1.3k output13 Диагностика13 Диагностика · Playwriter · GPT-6-Sol: 0.5 мин, 593 output13 Диагностика · Codex Chrome · GPT-6-Sol: 0.6 мин, 529 output13 Диагностика · Playwriter · Opus 5.5: 0.9 мин, 4.5k output13 Диагностика · Claude in Chrome · Opus 5.5: 0.6 мин, 2.8k output13 Диагностика · Playwriter · GPT-6-Sol: 0.5 мин, 593 output13 Диагностика · Codex Chrome · GPT-6-Sol: 0.6 мин, 529 output13 Диагностика · Playwriter · Opus 5.5: 0.9 мин, 4.5k output13 Диагностика · Claude in Chrome · Opus 5.5: 0.6 мин, 2.8k output14 Ассеты14 Ассеты · Playwriter · GPT-6-Sol: 0.3 мин, 468 output14 Ассеты · Codex Chrome · GPT-6-Sol: 0.4 мин, 461 output14 Ассеты · Playwriter · Opus 5.5: 0.8 мин, 3.8k output14 Ассеты · Claude in Chrome · Opus 5.5: 0.5 мин, 2.2k output14 Ассеты · Playwriter · GPT-6-Sol: 0.3 мин, 468 output14 Ассеты · Codex Chrome · GPT-6-Sol: 0.4 мин, 461 output14 Ассеты · Playwriter · Opus 5.5: 0.8 мин, 3.8k output14 Ассеты · Claude in Chrome · Opus 5.5: 0.5 мин, 2.2k output15 Запись экрана15 Запись экрана · Playwriter · GPT-6-Sol: 0.6 мин, 607 output15 Запись экрана · Codex Chrome · GPT-6-Sol: 0.4 мин, 383 output15 Запись экрана · Playwriter · Opus 5.5: 0.6 мин, 2.6k output15 Запись экрана · Claude in Chrome · Opus 5.5: 0.7 мин, 2.6k output15 Запись экрана · Playwriter · GPT-6-Sol: 0.6 мин, 607 output15 Запись экрана · Codex Chrome · GPT-6-Sol: 0.4 мин, 383 output15 Запись экрана · Playwriter · Opus 5.5: 0.6 мин, 2.6k output15 Запись экрана · Claude in Chrome · Opus 5.5: 0.7 мин, 2.6k output16 Состояние браузера16 Состояние браузера · Playwriter · GPT-6-Sol: 1.1 мин, 1.3k output16 Состояние браузера · Codex Chrome · GPT-6-Sol: 0.8 мин, 921 output16 Состояние браузера · Playwriter · Opus 5.5: 1.1 мин, 4.2k output16 Состояние браузера · Claude in Chrome · Opus 5.5: 1.2 мин, 5.0k output16 Состояние браузера · Playwriter · GPT-6-Sol: 1.1 мин, 1.3k output16 Состояние браузера · Codex Chrome · GPT-6-Sol: 0.8 мин, 921 output16 Состояние браузера · Playwriter · Opus 5.5: 1.1 мин, 4.2k output16 Состояние браузера · Claude in Chrome · Opus 5.5: 1.2 мин, 5.0k output17 CSP и Trusted Types17 CSP и Trusted Types · Playwriter · GPT-6-Sol: 0.5 мин, 738 output17 CSP и Trusted Types · Codex Chrome · GPT-6-Sol: 0.6 мин, 640 output17 CSP и Trusted Types · Playwriter · Opus 5.5: 0.7 мин, 3.6k output17 CSP и Trusted Types · Claude in Chrome · Opus 5.5: 0.7 мин, 3.2k output17 CSP и Trusted Types · Playwriter · GPT-6-Sol: 0.5 мин, 738 output17 CSP и Trusted Types · Codex Chrome · GPT-6-Sol: 0.6 мин, 640 output17 CSP и Trusted Types · Playwriter · Opus 5.5: 0.7 мин, 3.6k output17 CSP и Trusted Types · Claude in Chrome · Opus 5.5: 0.7 мин, 3.2k output

У Opus на Playwriter дороже всего вышли скриншоты (03), у Claude in Chrome — диалоги (02): alert вешает вкладку на 30–45 с. У GPT на Playwriter дорогой вышла 02 из-за упавшего relay и повторного прогона.

03Модель или инструмент

Чтобы отделить вклад модели от вклада инструмента, Opus 5.5 отдельно прогнал тот же набор через Playwriter. Получилось 2×2: одна модель на двух инструментах и один инструмент под двумя моделями. Reasoning у всех четырёх лейнов medium. Codex Chrome шёл по контракту v2 (CDP разрешён, см. методику), поэтому пара Codex Chrome ↔ Claude in Chrome сравнивает ещё и контракт; пара на Playwriter — чистая.

Минуты на 17 комнат010203040Output-токены на 17 комнат040k80k120kGPT-6-Sol + PlaywriterGPT-6-Sol + Playwriter: 18 мин18 минGPT-6-Sol + Playwriter: 22k22kGPT-6-Sol + Codex ChromeGPT-6-Sol + Codex Chrome: 21 мин21 минGPT-6-Sol + Codex Chrome: 30k30kOpus 5.5 + PlaywriterOpus 5.5 + Playwriter: 21 мин21 минOpus 5.5 + Playwriter: 77k77kOpus 5.5 + Claude in ChromeOpus 5.5 + Claude in Chrome: 25 мин25 минOpus 5.5 + Claude in Chrome: 79k79k

Куда уходят токены у Opus

Output раскладывается на код, который агент пишет в вызовы инструментов, видимый текст и мышление. У GPT мышление Codex сообщает отдельно. У Opus в транскрипте его нет, поэтому оно считается как остаток. Главная поправка — токенайзер. По сообщениям Opus без мышления видно, что один и тот же текст у Claude стоит в 1.56 раза больше токенов, чем в o200k, плюс ~49 токенов на каждый вызов (317 сообщений, R² 0.998). Ниже части Opus — в токенах Claude, как их и считает биллинг.

Playwriter · GPT-6-SolPlaywriter · GPT-6-Sol · мышление (reasoning / thinking): ~8.6k (19%)8.6kPlaywriter · GPT-6-Sol · код и вызовы инструментов: ~33k (73%)33kPlaywriter · GPT-6-Sol · видимый текст: ~1.6k (3%)Playwriter · GPT-6-Sol · прочее: ~2.2k (5%)45kCodex Chrome · GPT-6-SolCodex Chrome · GPT-6-Sol · мышление (reasoning / thinking): ~7.5k (21%)Codex Chrome · GPT-6-Sol · код и вызовы инструментов: ~26k (72%)26kCodex Chrome · GPT-6-Sol · видимый текст: ~907 (3%)Codex Chrome · GPT-6-Sol · прочее: ~1.5k (4%)36kPlaywriter · Opus 5.5Playwriter · Opus 5.5 · мышление (reasoning / thinking): ~9.7k (10%)9.7kPlaywriter · Opus 5.5 · код и вызовы инструментов: ~84k (87%)84kPlaywriter · Opus 5.5 · видимый текст: ~2.9k (3%)97kClaude in Chrome · Opus 5.5Claude in Chrome · Opus 5.5 · мышление (reasoning / thinking): ~5.3k (6%)Claude in Chrome · Opus 5.5 · код и вызовы инструментов: ~84k (92%)84kClaude in Chrome · Opus 5.5 · видимый текст: ~1.8k (2%)92kмышление (reasoning / thinking)код и вызовы инструментоввидимый текстпрочее
МетрикаPlaywriter
GPT-6-Sol
Codex Chrome
GPT-6-Sol
Playwriter
Opus 5.5
Claude in Chrome
Opus 5.5
Output за лейн45k36k97k92k
То же в токенах GPT (o200k)45k36k~57k~53k
Мышление8.6k (19%)7.5k (21%)~9.7k (10%)~5.3k (6%)
Запросов / вызовов инструментов173 / 171121 / 119138 / 153166 / 185
Кода на вызов, токены o200k193219321261
Скриншотов, увиденных моделью04956
Контекст на запрос: медиана / макс.110k / 151k104k / 155k181k / 284k190k / 277k
Секунд на запрос (без очереди)8.211.410.99.9

04Матрица возможностей

дачастичнонетчеловекне добито

«Человек» — действие возможно только через интерфейс браузера или ОС, который агенту не виден. «Не добито» — упёрлись не в инструмент, а в постановку задачи, решение агента или сбой прогона; тест стоит повторить. Каждое «нет» и «частично» сверено с отчётами: где отказ вызван состоянием профиля Chrome (разрешения сайта), зумом стенда или каскадом после сбоя, это сказано в ячейке. В скобках — номер комнаты. Колонка Playwriter объединяет находки обоих агентов, пометка «Opus» — то, что нашёл только он.

Выполнение кодаPlaywriterCodex ChromeClaude in Chrome
JS в контексте страницыВыполнить свой JS прямо в странице и увидеть её переменные и функциида
page.evaluate вызвал и подменил функции приложения; Opus достал даже переменную из замыкания, подменив crypto.randomUUID init-скриптом (08)
да
Штатный evaluate изолированный и только читает. Через CDP Runtime.evaluate — полный доступ: вызвал, изменил и подменил browserLabApp (08)
да
javascript_tool видит и патчит глобалы страницы, умеет top-level await (08)
Изменение DOM и подмена функцийПоменять текст/элементы и подменить функцию, которую вызывает сама страницада
Текст изменён, increment подменён, настоящий клик идёт через патч (08)
да
Через CDP: текст, счётчик и функции изменены (08), обработчики навешаны (10)
да
Как у Playwriter; Trusted Types соблюдается (08, 10)
Скрипты до загрузки страницыПерехватить fetch, WebSocket, console раньше, чем их вызовет код страницыда
addInitScript перехватил fetch/Worker/WebSocket, поменял ранний аргумент, пережил reload и навигацию (12)
нет
API нет; CDP Page.addScriptToEvaluateOnNewDocument и Target.setAutoAttach отклонены (12)
нет
API нет; патчи из javascript_tool пропадают после reload (08, 12)
DebuggerОстановиться на breakpoint и достать локальную переменную из замыканияда
createDebugger поймал паузу и передал локальный токен в верификатор — TOKEN MATCH (11)
частично
CDP поймал Debugger.paused и call frame, но JS-сессия инструмента сбросилась до передачи токена (11). В июле тот же путь дошёл до TOKEN MATCH
нет
Debugger и CDP наружу не отдаются (11)
Raw CDPПрямой доступ к DevTools-протоколу — универсальная отмычка для всего, чего нет в APIда
getCDPSession: Target, Network, Runtime, addScriptToEvaluateOnNewDocument работают (09, 12, 16, 17)
частично
Выборочно: Runtime, Network, Debugger — да; init-скрипты, Target.setAutoAttach и Target.getTargets отклонены (09, 12)
нет
Не отдаётся
CSP и Trusted TypesОбходит ли код инструмента политику безопасности страницыда
eval выполняется вопреки CSP, строковый innerHTML блокируется Trusted Types (17)
да
Реальные заголовки прочитаны; eval через CDP работает, строковый sink блокирует Trusted Types (17)
да
eval вопреки CSP, Trusted Types соблюдается (17)
ВводPlaywriterCodex ChromeClaude in Chrome
Настоящие клики, ввод, hoverСобытия, которые браузер считает настоящими (isTrusted), а не синтетическимида
Все события isTrusted:true (06)
да
click, dblclick, contextmenu, hover — trusted (06)
да
Trusted, координаты точные (06). Но клики сразу после перехода на страницу молча теряются, пока не сделан скриншот (02, 08)
Клавиатура: down/up, удержаниеДержать клавишу, отдельно нажать и отпустить, аккордыда
Shift down/up, стрелки, Tab, аккорды (06)
не добито
Штатно только атомарные нажатия и аккорды (06). Удержание через CDP Input агент не пробовал
частично
Аккорды и повтор есть, отдельных down/up нет; не-ASCII — через insertText; shift+a печатает строчную «a» (06)
Колесо мышиНастоящие wheel-события: на них завязаны карты, зум, кастомный скроллда
Вертикальное и горизонтальное (06)
да
dy и dx в ledger (06)
нет
scroll двигает страницу, но wheel-событий ноль (06)
Drag & drop, рисование на canvasПеретаскивание и рисование с зажатой кнопкойда
TRUSTED DROP COMPLETE, треугольник одним удержанием (06)
да
Drop и траектория с buttons=1 (06)
частично
Drop работает, но только прямые штрихи: треугольник из трёх drag (06)
Activation bridgeВставить свой обработчик и нажать его настоящим кликом — так открываются API, требующие жеста пользователяда
5 из 5: clipboard, попап, пикер открылись (10). Нюанс от Opus: сам page.evaluate даёт странице user activation, поэтому синтетический клик внутри него тоже открывает попап и пишет в clipboard
да
Обработчики вставлены через CDP; настоящие клики дали user activation, синтетика — нет (10)
да
Все 5 обработчиков получили настоящий клик с user activation. Clipboard и попап сработали; fullscreen, уведомления и пикер упёрлись в состояние окна и профиля, как и у Playwriter (10)
ClipboardPlaywriterCodex ChromeClaude in Chrome
ТекстЗаписать и прочитать текст в системном буфере обменачастично
Запись работает. Чтение упирается в разрешение сайта clipboard-read: 29.09 висел запрос разрешения, 30.09 оно уже было denied. Выдать его из инструмента нельзя, grantPermissions падает с ошибкой протокола (04)
частично
Инструмент пишет — страница читает. Обратное чтение сразу после записи страницей не совпало (04)
частично
Своего API нет; через JS страницы и настоящие cmd+c/cmd+v — MARKER MATCH (04)
HTML и PNGБуфер с несколькими форматами сразу: текст, HTML, картинкачастично
Запись прошла; прочитать обратно не дало то же разрешение сайта (04)
да
Штатный clipboard.read: text/plain + text/html и image/png (04)
частично
Через paste-событие: форматы и байты PNG сохранились (04)
Копирование и вставка с клавиатурыВыделить → cmd+c → cmd+v, как человекнет
Cmd+A/C/V доходят как нажатия, но не работают как команды редактирования: NO MATCH (04, 06)
да
Маркер совпал (04, 06)
да
MARKER MATCH (04, 06)
Чтение без жеста пользователяПрочитать буфер без свежего клика по страницечеловек
Нужно разрешение clipboard-read, его даёт человек в запросе браузера: 29.09 запрос повис, 30.09 разрешение было denied (04)
да
Читает без жеста (04)
человек
Нужно то же разрешение сайта clipboard-read: в профиле оно было denied, своего API у инструмента нет (04)
СкриншотыPlaywriterCodex ChromeClaude in Chrome
Страница: viewport, full-page, точный clipСнимок видимой части, всей страницы и заданного прямоугольникачастично
PNG всех трёх видов; clip и скриншот элемента точные (Opus, 03). Cross-origin iframe в full-page пустой
частично
Viewport, full-page и точный clip 320×180 (03). Cross-origin iframe в кадре пустой
частично
Только viewport (JPEG): full-page и точного clip нет, zoom даёт кроп в разрешении устройства. Кадры чистые даже в скрытом окне (03)
Интерфейс браузераАдресная строка, запросы разрешений, автозаполнение паролей, нативные менюнет
Только пиксели страницы (01–03)
нет
Только пиксели страницы (01–03)
нет
Только пиксели страницы (01–03)
Диалоги и окнаPlaywriterCodex ChromeClaude in Chrome
JS alert, confirm, promptСистемные JS-диалоги, блокирующие страницуда
Dialog-события: alert, confirm, точный prompt, отложенный alert (02). Relay падал на первом диалоге в обоих прогонах: к нему было подключено несколько клиентов Playwright, и каждый отвечал на диалог. С одним клиентом все 6 диалогов прошли
частично
Alert виден и закрывается через getJsDialog; следующий confirm завис по таймауту, prompt и отложенный alert не проверены (02)
нет
API нет; alert вешает вкладку на 30–45 с. Вернуть вкладку можно через navigate с force:true (02)
beforeunloadДиалог «Покинуть сайт?» при уходе со страницыда
dismiss оставил на странице, accept увёл (02)
не добито
Не проверено: после сбоя на confirm связь с вкладкой оборвалась (02)
да
navigate сообщает о диалоге и остаётся; force:true уходит (02)
Попапы и дочерние вкладкиНайти окно, которое открыла страница, прочитать его и закрытьчастично
Попап с размерами, отложенный и OAuth пойманы; _blank и window.open не увидел (07)
да
Свои вкладки находит через перечисление с фильтром, OAuth-обмен прошёл; второй одновременный попап не открылся по политике Chrome, поля opener нет (07)
частично
_blank, window.open и отложенный попап попадают в группу вкладок инструмента. Окна с размерами и OAuth-попап — нет, хотя OAuth-обмен проходит; до них достаётся только через JS родителя (07)
Разрешения и fullscreenУведомления, геолокация, полноэкранный режимчастично
Уведомления в профиле заранее denied, запрос не проверить. Fullscreen зависит от состояния окна: у Opus настоящий клик включил его в 10, у GPT и в 02 — «not granted». Выйти из fullscreen клавишей Escape из инструмента нельзя (02, 10)
не добито
Уведомления в профиле denied; в 02 fullscreen не проверен из-за обрыва связи, в 10 настоящий клик дал «not granted» (02, 10)
не добито
Уведомления в профиле denied; fullscreen «not granted», окно Chrome было скрыто — вероятная причина (02, 10)
Структура страницыPlaywriterCodex ChromeClaude in Chrome
IframesРабота внутри встроенных фреймов, в том числе с другого домена и в песочницеда
Frame-объекты для всех 4 фреймов, включая sandbox и cross-origin (09)
частично
Снапшот показал текст всех фреймов, адресно — только same-origin (09)
частично
Только same-origin через DOM; cross-origin и sandbox недоступны (09)
Closed Shadow DOMСодержимое веб-компонента, закрытое от JS страницычастично
shadowRoot = null; snapshot показывает содержимое, но предложенный локатор не работает; достаётся через CDP DOM.getDocument с pierce (Opus, 09)
не добито
shadowRoot = null; CDP DOM с pierce агент не пробовал (09)
нет
shadowRoot = null; find и read_page не заходят даже в открытый shadow DOM (02, 09)
WorkersФоновые JS-потоки страницы (dedicated, shared, service worker): видит ли их инструмент и ловит ли их ошибкичастично
Результаты воркеров видны через страницу, но page.workers() пуст; падение воркера ловится только через CDP Log.entryAdded (Opus, 09, 13)
частично
Результаты воркеров видны через страницу; таргетов нет, CDP Target.getTargets не поддержан (09)
нет
Ни воркеров, ни их ошибок (09, 13)
ФайлыPlaywriterCodex ChromeClaude in Chrome
Загрузка файлов на страницуПодать файлы в input type=fileда
setInputFiles: 3 файла, хэши совпали (05)
да
Одиночная и множественная загрузка фикстур (05)
да
file_upload из рабочей папки, хэши совпали (05)
Загрузка папкиВыбор целой папки (webkitdirectory) с сохранением относительных путейда
setInputFiles(папка): 6 файлов с относительными путями за 0.5 с (Opus, 05)
нет
webkitdirectory: setFiles молча ничего не загрузил (05)
нет
Папку не принимает, webkitRelativePath пустой (05)
Нативные диалоги выбора файлаСистемные окна «Открыть», «Выбрать папку», «Сохранить как»человек
Открываются настоящим кликом, выбрать путь может только человек (05)
человек
То же (05)
человек
То же; первый диалог повисает на экране пользователя, закрыть его можно клавишей Escape из инструмента (05)
СкачиванияСкачать файл и получить его байтыда
Событие и имя файла есть, сам файл ложится в ~/Downloads — проверено вручную. Сломана обёртка Playwright: saveAs, stream и response.body() пустые, байты надо брать с диска (05)
частично
ZIP и три вложения скачаны и захэшированы по пути из события; Blob-скачивание не дало события (05)
частично
Файлы ложатся в ~/Downloads — проверено вручную по времени, — но инструмент об этом не знает: ни события, ни пути, в сетевом логе 503 (05)
Состояние и диагностикаPlaywriterCodex ChromeClaude in Chrome
Cookies, включая HttpOnlyCookies, которые JS страницы не видитчастично
Штатные context.cookies и storageState падают с ошибкой протокола; CDP Network.getCookies отдаёт и HttpOnly (16)
частично
Только через CDP: метаданные cookies, включая HttpOnly (16)
нет
Только document.cookie, HttpOnly недоступны вообще (16)
localStorage, IndexedDB, Cache, SWХранилища страницы и их переживание reloadда
Записи и переживание reload подтверждены; Opus проверил и новую вкладку (16)
не добито
Переживание reload подтверждено частично, новую вкладку агент не проверял (16)
да
Хэши до и после reload совпали, новая вкладка проверена (16)
КонсольЛоги, предупреждения, исключения со стекомда
Уровни, исключения, ранние логи; page.on('console') даёт время и источник (Opus, 13)
да
Уровни, ISO-время, URL (13)
да
Уровни, время, строка:колонка, стеки (13)
СетьЗапросы и ответы: статусы, редиректы, SSE, WebSocketда
200/404/500/307→200, тайминги, тела ответов, WS-фреймы; содержимое SSE — через response.text() (Opus, 13)
да
CDP Network: запросы, ответы, исключения, WebSocket-фреймы (13)
частично
Только URL, метод, статус: нет заголовков, тел и WebSocket, редирект без 3xx (13)
Инвентарь и выгрузка ассетовНайти все картинки, CSS-фоны, SVG и выгрузить их пачкойда
Инвентарь с байтами и SHA-256, выгрузка пачкой и источник CSS-фона (Opus, 14). GPT-агент выгрузку не делал
да
pageAssets нашёл и CSS-фон, выгрузил 5 файлов пачкой (14)
частично
Всё нашёл через DOM и Performance, выгрузки нет (14)
Запись экранаВидео или анимация действий на страницечеловек
recording.start требует клика по иконке расширения (15)
нет
API нет (15)
частично
GIF до 50 кадров без жеста; кадр пишется только на действии, файл уходит в ~/Downloads (15)
Сохранённый пароль (dummy)Автозаполнение из менеджера паролей Chromeчеловек
Сохранение подтверждает только человек; выбирать вслепую запрещено (01)
человек
То же (01)
человек
То же (01)
Итого строк21 да · 8 част. · 2 нет · 4 чел. · 0 не доб.15 да · 9 част. · 4 нет · 2 чел. · 5 не доб.10 да · 11 част. · 10 нет · 3 чел. · 1 не доб.

05Время и токены

Из чего состоит время лейна

Playwriter · GPT-6-SolPlaywriter · GPT-6-Sol · комнаты: 17.6 мин18 минPlaywriter · GPT-6-Sol · очередь на общие комнаты: 8.6 минPlaywriter · GPT-6-Sol · запись отчётов: 4.8 минPlaywriter · GPT-6-Sol · старт: 1.2 мин32.2 минCodex Chrome · GPT-6-SolCodex Chrome · GPT-6-Sol · комнаты: 20.6 мин21 минCodex Chrome · GPT-6-Sol · очередь на общие комнаты: 0.1 минCodex Chrome · GPT-6-Sol · запись отчётов: 1.2 минCodex Chrome · GPT-6-Sol · старт: 1.1 мин23.0 минPlaywriter · Opus 5.5Playwriter · Opus 5.5 · комнаты: 21.1 мин21 минPlaywriter · Opus 5.5 · очередь на общие комнаты: 11.6 минPlaywriter · Opus 5.5 · запись отчётов: 3.7 минPlaywriter · Opus 5.5 · старт: 0.3 мин36.7 минClaude in Chrome · Opus 5.5Claude in Chrome · Opus 5.5 · комнаты: 24.6 мин25 минClaude in Chrome · Opus 5.5 · очередь на общие комнаты: 4.2 минClaude in Chrome · Opus 5.5 · запись отчётов: 2.3 минClaude in Chrome · Opus 5.5 · старт: 0.5 мин31.6 минкомнатыочередь на общие комнатызапись отчётовстарт

Комнаты 01, 02, 04, 05 и 10 затрагивают общее состояние браузера (clipboard, фокус, пикеры, разрешения), поэтому шли строго по одной на все лейны одного дня — отсюда очередь. 30.09 два Opus-лейна ждали друг друга: Playwriter простоял около 12 минут перед комнатой 01. Очередь в минуты комнат не входит.

МетрикаPlaywriter
GPT-6-Sol
Codex Chrome
GPT-6-Sol
Playwriter
Opus 5.5
Claude in Chrome
Opus 5.5
Весь лейн, минут32.223.036.731.6
Из них на комнаты, минут17.620.621.124.6
Output-токены, всего45k36k97k92k
Output-токены на комнаты22k30k77k79k
Некэшированный input, всего284k146k272k303k
Input с кэшем, всего17.6M12.1M24.7M29.7M
Автопроверка Codex: input / output0.56M / 1.5k9.9M / 8.0k——

В Codex Chrome автопроверка каждого вызова node_repl съела ~9.9M input, почти всё из кэша, — сопоставимо с самим лейном.

06Что для чего брать

Playwriter
Отладка своего фронтенда и сложные сценарии: debugger, init-скрипты, диалоги, точный ввод, загрузка файлов, raw CDP. Минусы: relay падает, если к нему подключено несколько клиентов Playwright и страница показывает JS-диалог, байты скачанного файла надо забирать из ~/Downloads, копирование и вставка с клавиатуры не работают.
Codex Chrome
Безопасное чтение и выгрузка: clipboard с форматами, вкладки и попапы, сеть и консоль, cookies и ассеты. Через raw CDP меняет страницу и ловит паузы отладчика. Минусы: нет init-скриптов и записи экрана, JS-диалоги рвут связь с вкладкой, перечисление вкладок надо разрешать явно.
Claude in Chrome
Быстрые действия из Claude Code: JS в странице, trusted-ввод, вкладки, загрузка файлов, GIF-запись. Не для диалогов, отладки, точных скриншотов и сетевой диагностики. Окно Chrome должно быть видимым.

Модель. При одинаковом reasoning medium GPT-6-Sol в 2–3.5 раза дешевле по токенам и немного быстрее, для рутинных браузерных задач его хватает. Opus 5.5 дороже в основном из-за токенайзера, зато проверяет глубже и сам находит подвохи — скрытые переменные, причину падения relay. Его стоит брать для исследования и отладки.

07Методика и оговорки

[ grably.tech ]Browser Lab · 29–30.09.2026