<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: marinsky roma</title>
    <description>The latest articles on Forem by marinsky roma (@rmarinsky).</description>
    <link>https://forem.com/rmarinsky</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F70497%2F086d0074-7581-4b43-9f0b-76efcbb01ab8.png</url>
      <title>Forem: marinsky roma</title>
      <link>https://forem.com/rmarinsky</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/rmarinsky"/>
    <language>en</language>
    <item>
      <title>QA is dead 2005 vs 2015 vs 2025</title>
      <dc:creator>marinsky roma</dc:creator>
      <pubDate>Tue, 10 Feb 2026 16:24:31 +0000</pubDate>
      <link>https://forem.com/rmarinsky/qa-is-dead-2005-vs-2015-vs-2025-3la6</link>
      <guid>https://forem.com/rmarinsky/qa-is-dead-2005-vs-2015-vs-2025-3la6</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9v6xrw7qyysditnrrvqy.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9v6xrw7qyysditnrrvqy.jpg" alt=" " width="544" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every couple of years, the same wave hits LinkedIn: "QA is being eliminated," "testers will be replaced," "QA teams are the first to go."&lt;/p&gt;

&lt;p&gt;In 2025, the boogeyman is AI. Before that, it was shift-left. Before that - automation. Before that — Agile. The framing changes, the panic stays the same.&lt;/p&gt;

&lt;p&gt;But here's the thing - none of this is new. Not even close.&lt;/p&gt;

&lt;p&gt;2011 - Facebook had no dedicated QA team. Simon Stewart (creator of WebDriver) had already explained that developers owned quality. The Quora thread "Is it true that Facebook has no testers?" is from that era.&lt;/p&gt;

&lt;p&gt;2012 - "How Google Tests Software" came out. Google had already transformed QA into Test Engineers and Software Engineers in Tools &amp;amp; Infrastructure. Developers owned their tests. The "traditional QA is dead" narrative was already in full swing.&lt;/p&gt;

&lt;p&gt;2014 - Microsoft eliminated the SDET role during an 18,000-person layoff. Entire testing organizations were restructured overnight. Gergely Orosz documented this firsthand in "How Big Tech does QA."&lt;/p&gt;

&lt;p&gt;2015 - ThoughtWorks published "Is QA Dead?" Yahoo cut its QA department entirely. Slashdot had a 500+ comment thread debating it. Elisabeth Hendrickson introduced "testing = checking + exploring" at OnAgile — addressing the exact same fear we see today.&lt;/p&gt;

&lt;p&gt;2015 - Also the year the Slashdot thread "No More QA: Yahoo's Tech Leaders Say Engineers Are Better Off Coding With No Net" went viral. Read the comments. They could've been written yesterday.&lt;/p&gt;

&lt;p&gt;That was a decade ago. QA didn't die. It adapted. Testers who evolved - survived and thrived. Those who didn't - struggled. Same as in every profession.&lt;/p&gt;

&lt;p&gt;Fast-forward to today, and replace "automation" with "AI agents" - the script is identical. "QA will be replaced by AI." "You won't need testers anymore." "Your team will be cut in half."&lt;/p&gt;

&lt;p&gt;And conveniently, there's always a tool to sell you right after the scare.&lt;br&gt;
Here's what actually happens every single time: the panic fades, the roles evolve, and the people who understand systems, edge cases, risk, and user behavior remain indispensable. Because quality isn't a phase you bolt on — it's a mindset. No tool replaces that.&lt;/p&gt;

&lt;p&gt;If you're a QA engineer reading yet another "your job is disappearing" post, relax. Learn, adapt, stay curious. But don't let recycled fear-mongering from people selling solutions make you question your value.&lt;/p&gt;

&lt;p&gt;This conversation has been going in circles for 15 years. The only thing that changes is who profits from the panic.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Agent Orchestration, Multi-Model Setups, 1M Context Window - It's Marketing for Those Who Haven't Tried</title>
      <dc:creator>marinsky roma</dc:creator>
      <pubDate>Wed, 28 Jan 2026 19:39:31 +0000</pubDate>
      <link>https://forem.com/rmarinsky/agent-orchestration-multi-model-setups-1m-context-window-its-marketing-for-those-who-havent-5c58</link>
      <guid>https://forem.com/rmarinsky/agent-orchestration-multi-model-setups-1m-context-window-its-marketing-for-those-who-havent-5c58</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This is aggregated experience - mine personally and from public engineers, current and former colleagues who code daily in enterprise, build their own products, countless prototypes: Viktor Tulskyi, The Prime Gen, Theo (t3.chat), Peter Steinberger, Gregory Orosz, and many other pragmatic engineers.&lt;br&gt;
This isn't a research paper with metrics. These are practical conclusions from those who tried everything and came back to simplicity.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  AI Can Be Exciting and Useful, But There Will Be "Buts"
&lt;/h2&gt;

&lt;p&gt;I enjoy AI. I use it daily. I can now quickly do things I never understood before - at the level of PoC, MVP, internal utilities that turn a five-minute task into a second.&lt;/p&gt;

&lt;p&gt;I built internal extensions for infrastructure, a &lt;a href="https://github.com/rmarinsky/dictate_to_buffer" rel="noopener noreferrer"&gt;console utility&lt;/a&gt; for transcribing voice to text via clipboard, a &lt;a href="https://github.com/rmarinsky/DictateToBuffer" rel="noopener noreferrer"&gt;macOS utility&lt;/a&gt; for the same but more convenient - &lt;strong&gt;this has become exciting for me&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Every day, I follow what's happening in the AI world. Every day I try something new:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tool updates, services like Supabase, Vertex, Convex&lt;/li&gt;
&lt;li&gt;New bullshit benchmarks from providers&lt;/li&gt;
&lt;li&gt;New papers on approaches, prompt combinations, contexts, models, and tokenization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So much to learn - and at the same time, so much that doesn't meet expectations. But useful stuff, everything I follow - ideas already worked out by other engineers, companies, researchers.&lt;/p&gt;

&lt;p&gt;And also - so many promotional, sales, marketing videos. How someone built multi-agent orchestration, and agents solve tasks independently, practically without participation. Demos of full autonomy. Beautiful, polished, convincing.&lt;/p&gt;

&lt;p&gt;I tried this too. Experimented. Temperatures, system prompts, fallbacks, and playgrounds with different models. Multi-model setups, multi-agent systems, sub-agents, RAG.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Everything&lt;/strong&gt;, literally! It's pouring from empty to empty. Everything falls apart in the details when it meets reality.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  My Prompting Journey Looked Like This:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Stage 1:&lt;/strong&gt; "Fix this, here's the stacktrace"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stage 2:&lt;/strong&gt; Multi-model, multi-agent, orchestration, RAG, complex system prompts, temperatures, fallbacks...&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stage 3:&lt;/strong&gt; "Fix this, here's the stacktrace, here's when it happens, probably the problem is here"&lt;/p&gt;

&lt;p&gt;The difference between first and third stage - I now know exactly &lt;em&gt;what&lt;/em&gt; needs to be fixed. Where to look, what context to give, how to formulate.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Narrowing context always works better than 1 MILLION input tokens for writing code.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;All that stuff in the middle - multi-agents, orchestration, RAG - was marketing I swallowed. And you can try it too. Try it! Seriously. So you understand firsthand HOW it doesn't work. And when it potentially could work.&lt;/p&gt;

&lt;p&gt;But don't spend too much time on it - in the long run, for MVPs and large projects, it makes weakly controllable changes with their own unique consequences.&lt;/p&gt;

&lt;h2&gt;
  
  
  Accuracy
&lt;/h2&gt;

&lt;p&gt;One of the key parameters for evaluating LLMs for code generation is accuracy.&lt;/p&gt;

&lt;p&gt;More specifically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pass@k - did at least 1 of k attempts pass tests&lt;/li&gt;
&lt;li&gt;Pass@1 - did the code complete the task on the first try&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not "almost works", not "needs tweaking". Works or doesn't.&lt;/p&gt;

&lt;p&gt;Not "how nicely it sounds". Not "how confidently written". But how repeatable and correct.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Accuracy isn't the only metric. For brainstorming, analysis, and review, variability can be useful. But for code that must compile, pass tests, and work in production, accuracy is more critical.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Code either works or it doesn't.&lt;/p&gt;

&lt;p&gt;The interpreter and compiler aren't creative personalities having a discussion with the author, and a "500 error" isn't production abstractionism.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Agent/LLM Doesn't "Think"
&lt;/h2&gt;

&lt;p&gt;Sorry to repeat, but an LLM is a probability generator for the next token. And when you put two token generators to communicate with each other, you don't get a "team". You get accumulating hallucinations with each step.&lt;/p&gt;

&lt;p&gt;What happens to "Accuracy" when agent A passes results to agent B, which passes to agent C? It drops. Exponentially. Each step adds variability. Each step moves further from the expected result.&lt;/p&gt;

&lt;p&gt;Multi-agent is a marketing term for "I wrote several prompts, and they call each other".&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Multi-agent isn't an architecture. It's hoping that LLM will magically understand the context you haven't formalized yourself.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  "But Devin, Cursor, Windsurf background agents - they work!"
&lt;/h4&gt;

&lt;p&gt;They work. In specific cases. On particular workflows. But compare: how much time will you spend configuring Cursor rules, custom agents, your own RAG system vs. understanding the project architecture, knowing where to look for the problem, and asking AI to brainstorm solution options?&lt;/p&gt;

&lt;p&gt;A person who understands the system + simple conversation with a "model" = (more often gets) faster and more accurate solution than juggling multi-agent setups you configured for a week.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sub-agents?&lt;/strong&gt; Charade - as Peter Steinberger aptly called &lt;a href="https://steipete.me/posts/just-talk-to-it" rel="noopener noreferrer"&gt;it in his blog post&lt;/a&gt; about how you can work more simply with "agents".&lt;/p&gt;

&lt;p&gt;What others do through sub-agents, you can do through separate terminal windows. Full control. Full context visibility. Less exponential progression of hallucinations. And most importantly - athe bility to verify results at each step!&lt;/p&gt;

&lt;h2&gt;
  
  
  MCP? Marketing Token Burner and Hallucination Igniter
&lt;/h2&gt;

&lt;p&gt;Most of them should just be CLI or API clients.&lt;/p&gt;

&lt;p&gt;GitHub MCP eats 23k context tokens from the start. &lt;code&gt;gh&lt;/code&gt; CLI does the same - "for free".&lt;/p&gt;

&lt;p&gt;Or generate a simple script that calls GitHub API for a specific task - you'll get predictable results without the magic of "now the agent will figure it out thanks to MCP".&lt;/p&gt;

&lt;p&gt;MCP provides structure? API does too. CLI with the proper output format, too. The difference is that you fully control a script, while MCP is a black box, often limited, that can return anything because it accidentally called the wrong tool and ate context just because you initialized it in the agent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; MCP for Figma is a separate story - for frontend work, it's genuinely useful. I'm more skeptical about MCP for browser/database - the value there is questionable.&lt;/p&gt;

&lt;h2&gt;
  
  
  RAG for Code?
&lt;/h2&gt;

&lt;p&gt;In an enterprise for searching documentation, regulatory requirements, and internal wikis, RAG makes sense. If you have a DEDICATED team maintaining it, write in comments what cases it actually helps, and that you're from a "wealthy family".&lt;/p&gt;

&lt;p&gt;But if you're a developer who wants to set up RAG for your own codebase so the "model better understands the project," it's overkill without value. Modern models already search code well when given the right context.&lt;/p&gt;

&lt;p&gt;Your time is better spent on understanding the architecture/structure than on configuring vector indexes.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Separate Illusion - Context Window
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"Gemini has a million tokens! You can throw in the entire codebase!"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There's &lt;a href="https://arxiv.org/abs/2307.03172" rel="noopener noreferrer"&gt;research&lt;/a&gt; "lost in the middle" - the model loses information in the middle of a large context. Yes, the research is old, and new models show better results in synthetic tests like &lt;a href="https://github.com/gkamradt/LLMTest_NeedleInAHaystack" rel="noopener noreferrer"&gt;"needle in a haystack"&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;But even Google Gemini 3.0 Pro &lt;a href="https://ai.google.dev/gemini-api/docs/long-context#long-context-limitations" rel="noopener noreferrer"&gt;declares the same&lt;/a&gt; - the more facts you search for simultaneously (like in real work) - accuracy drops sharply!&lt;/p&gt;

&lt;p&gt;In practice, mine and my colleagues' in an enterprise - large context still works worse. Not because the model "forgets". But because more context = more noise = more response variability = lower "Accuracy".&lt;/p&gt;

&lt;p&gt;Compare:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Throw 500k tokens of code and say, "find and fix the problem"&lt;/li&gt;
&lt;li&gt;Know where the problem likely is, give the relevant file and context for the fix&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For simple things - find a function, update implementation, see where it's used - agents handle it fairly well. But for more complex changes or refactoring, you often get "shrapnel": changes scattered across the project, extra code created that then needs cleanup.&lt;/p&gt;

&lt;p&gt;When you give more hints about the structure, it works more reliably. But for that, you need to understand the architecture and codebase. A million context tokens won't replace that.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Again:&lt;br&gt;
LLM is a probability generation machine, not a logical processor.&lt;br&gt;
More noise in - more noise out.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Autonomy
&lt;/h2&gt;

&lt;p&gt;Agent autonomy works exactly until the task goes beyond the demo scenario. First edge case - and the whole "orchestration" falls apart.&lt;/p&gt;

&lt;p&gt;Why don't those selling courses and tools talk about this? Because "it works for 70% of cases, and the rest needs manual work" - doesn't sell. "Full autonomy" - sells.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Actually Works?
&lt;/h2&gt;

&lt;p&gt;Iterative work!&lt;/p&gt;

&lt;p&gt;Just talk to the model, literally. Check the result. Adjust. Repeat. Stop when something goes wrong.&lt;/p&gt;

&lt;p&gt;Ask: "let's come up with different solutions", "what best practices exist for working with these specific problem domains", "now let's make a prompt for the next iteration" (&lt;a href="https://arxiv.org/abs/2211.01910" rel="noopener noreferrer"&gt;APE&lt;/a&gt;/&lt;a href="https://arxiv.org/abs/2504.04365" rel="noopener noreferrer"&gt;APRO&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Instead of blindly approving every action.&lt;/p&gt;

&lt;p&gt;"Accuracy" grows not from a larger context or a larger number of agents. It grows through iterations under the control of someone who understands the task.&lt;/p&gt;

&lt;p&gt;Most likely:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You don't need overkill frameworks with tons of abstractions and configurations. Don't need sub-agents.&lt;/li&gt;
&lt;li&gt;Don't need MCP for every service - write a script that does a specific thing, or just use SDK or API.&lt;/li&gt;
&lt;li&gt;Don't need a million input context tokens - need the right context.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You need your head. Your technical expertise. Your understanding of the task. And a model you talk to like an engineer - not a magical oracle that will understand, find, and solve everything for you.&lt;/p&gt;

&lt;p&gt;Neither expanded context, nor multi-agent, nor MCP, nor RAG - none of these increases accuracy/stability by itself. These are all tools that amplify an expert. They don't replace one.&lt;/p&gt;

&lt;p&gt;Everything else is silver bullinng for investors and content for LinkedIn, sales presentations of yet another charade of autonomy.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;P.S. This post wasn't written by LLM, it was transcribed from monologues with my PoC &lt;a href="https://github.com/rmarinsky/DictateToBuffer" rel="noopener noreferrer"&gt;Dictate to Buffer&lt;/a&gt;, links and proofs used from my bookmarks stash, certain parts with counterexamples researched thanks to Claude&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;P.P.S. Most of my conclusions I reached myself based on my own trial and error, and then it turned out others had already tried and done this at a larger scale 😅&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Playwright Quirks — waitForResponse</title>
      <dc:creator>marinsky roma</dc:creator>
      <pubDate>Thu, 20 Nov 2025 15:56:29 +0000</pubDate>
      <link>https://forem.com/rmarinsky/playwright-quirks-waitforresponse-21p6</link>
      <guid>https://forem.com/rmarinsky/playwright-quirks-waitforresponse-21p6</guid>
      <description>&lt;p&gt;Playwright has a convenient feature for waiting on responses from requests - waitForResponse.&lt;/p&gt;

&lt;p&gt;&lt;a href="**https://playwright.dev/docs/api/class-page#page-wait-for-response**"&gt;waitForResponse — playwright.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is helpful when there are no visual changes on the web UI, but you need to verify that a request was actually sent and an entity was successfully created. Instead of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Opening the page with that entity and writing checks to verify all data is correct&lt;/li&gt;
&lt;li&gt;Or directly "poking" a specific endpoint to check its fields&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can implement response waiting. Here's an example from the documentation:&lt;/p&gt;

&lt;h3&gt;
  
  
  Option 1: Declare the expectation first
&lt;/h3&gt;

&lt;p&gt;Start waiting, perform the action, then await the response:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;responsePromise&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;waitForResponse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://example.com/resource&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getByText&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;trigger response&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;click&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;responsePromise&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Option 2: Use a predicate
&lt;/h3&gt;

&lt;p&gt;Declare the predicate with expectations, perform the action, and get the result:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;responsePromise&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;waitForResponse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;
    &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;url&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://example.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;status&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;
    &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;request&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;method&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;GET&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getByText&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;trigger response&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;click&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;responsePromise&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The Promise Advantage
&lt;/h2&gt;

&lt;p&gt;Promises supposedly give us an advantage over other non-async languages.&lt;br&gt;
Legally, the logic described is correct and logically sound:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;First, we declare that we need to wait for a response from the backend, but we don't block the execution of subsequent actions&lt;/li&gt;
&lt;li&gt;Then we perform the action itself, and wait for it to complete - the browser directly tells Playwright that the action is done, the event is complete, roughly speaking&lt;/li&gt;
&lt;li&gt;Only then do we "receive" the result of the async wait that we declared to the browser&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  But Here's the Thing...
&lt;/h3&gt;

&lt;p&gt;Your backend doesn't respond to the frontend in 1 millisecond. At best, it'll respond in 100 milliseconds (unless we're talking about gRPC or WebSocket).&lt;br&gt;
The question arises: How much time passes between one promise completing and the next promise starting?&lt;br&gt;
Answer: Microseconds - it's just the time for the JS event loop to process the microtask queue.&lt;/p&gt;

&lt;h3&gt;
  
  
  So You Can Actually Write It Like This
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getByTestId&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;submit-button&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;click&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; 
&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;waitForResponse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;**/api/users&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's more compact and simpler!&lt;br&gt;
You're very unlikely to encounter a race condition where a click or fill takes so long that waiting for the response becomes pointless.&lt;br&gt;
So feel free to try writing "synchronous" code like this in your project - it works for me, and it'll work for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Proof of Concept
&lt;/h2&gt;

&lt;p&gt;For skeptics, I've prepared an example repository that emulates this behavior on localhost, where everything runs locally and passes successfully:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/rmarinsky/trivial_service_for_experiments" rel="noopener noreferrer"&gt;https://github.com/rmarinsky/trivial_service_for_experiments&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Of course, edge cases can occur depending on your frontend implementation.&lt;/p&gt;

</description>
      <category>playwright</category>
      <category>javascript</category>
      <category>automation</category>
    </item>
    <item>
      <title>Does it really work for anybody, AI agentic testing, or automation</title>
      <dc:creator>marinsky roma</dc:creator>
      <pubDate>Tue, 23 Sep 2025 11:28:32 +0000</pubDate>
      <link>https://forem.com/rmarinsky/is-it-really-works-for-anybody-ai-agentic-testing-or-automation-2l2a</link>
      <guid>https://forem.com/rmarinsky/is-it-really-works-for-anybody-ai-agentic-testing-or-automation-2l2a</guid>
      <description>&lt;p&gt;I have extensive experience in testing, automation, and setup of all these systems, and have successfully led numerous projects in the past that have fixed and scaled up automation, even for non-technical engineers.&lt;/p&gt;

&lt;p&gt;Participated and consulted with around ten companies about how to fix their Agentic testing or automation approach.&lt;br&gt;
In most cases, automation and testing were so unreliable that they even resulted in false positives, prompting complaints from C-level executives, managers, and engineers about their decision to shift Test Engineers or Automation engineers.&lt;/p&gt;

&lt;p&gt;Some of the Agentic testing providers claim to develop around 1000 test cases monthly, but after a few months, they deliver around 500 largely flaky tests. &lt;br&gt;
Some providers have claimed zero flakiness, connect Confluence or documents, and our tool will build excellent test coverage for every feature without requiring human interaction. &lt;/p&gt;

&lt;p&gt;I had a chance to listen to their demos, watch their ads, and websites with excellent descriptions&lt;br&gt;
But most of their demos, sites, and ads are based on just login, or just fulfilling a simple user registration setup&lt;/p&gt;

&lt;p&gt;But moreover, I see lots of articles on the engineering media that "Playwright MCP will blow your mind" and it's the same - login scenario, maximum simple registration, and shitty code generated based &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;So, does anybody have a success story for a big product to shift human Test Engineering to Agentic testing tools? &lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ai</category>
      <category>testing</category>
      <category>mcp</category>
      <category>playwright</category>
    </item>
  </channel>
</rss>
