<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Coder Legion - Recent posts tagged testautomation</title>
<link>https://coderlegion.com/tag/testautomation</link>
<description>Powered by Question2Answer</description>
<item>
<title>STOP reproducing bugs twice. Record once, get both a Markdown Bug Report and a Playwright Regression</title>
<link>https://coderlegion.com/30910/stop-reproducing-bugs-twice-record-once-get-both-markdown-report-playwright-regression</link>
<description>&lt;p&gt;📝Every QA engineer and developer knows the drill:&lt;br&gt;
You find a bug. You manually write down steps to reproduce, take screenshots, and format a ticket for Jira or GitHub. Then, you open your IDE and write the exact same steps all over again in code for your automated regression suite.&lt;/p&gt;
&lt;p&gt;Why do the same work twice?&lt;/p&gt;
&lt;p&gt;I built QA Bug → Regression Test to bridge the gap between manual reporting and automated regression testing. 🎯&lt;/p&gt;
&lt;p&gt;💡 How It Works:&lt;br&gt;
Record the Issue: Click Start Bug Session in your browser and reproduce the bug naturally. Clicks, inputs, navigation, and timing are recorded cleanly.&lt;br&gt;
Capture Inline Assertions: Highlight the visible error message, banner, or missing element right on the page to insert an immediate assertion.&lt;/p&gt;
&lt;p&gt;Instant Dual Output:&lt;br&gt;
🐞 Markdown Bug Report: Clean, formatted steps to reproduce with environment details and evidence, ready for GitHub Issues, Jira, or Linear.&lt;/p&gt;
&lt;p&gt;⚡ Playwright Test (.spec.ts): Production-ready code using resilient locators (getByRole, getByLabel, getByText) that drops straight into your test repository.&lt;/p&gt;
&lt;p&gt;🔒 Built for Privacy &amp;amp; Real-World QA:&lt;br&gt;
Zero-Leak Redaction: Passwords, API keys, and session tokens are automatically detected and replaced with REPLACE_WITH_TEST_VALUE in code and [REDACTED] in reports.&lt;br&gt;
100% Local &amp;amp; Offline-First: Manifest V3 compliant. Zero external tracking or servers—everything runs entirely inside your browser.&lt;/p&gt;
&lt;p&gt;🔗 Chrome Web Store: &lt;a rel=&quot;nofollow&quot; href=&quot;https://chromewebstore.google.com/detail/qa-bug-%E2%86%92-regression-test/khoelciicbkdeieibchdndccdncpelbg?authuser=1&amp;amp;hl=tr&quot;&gt;https://chromewebstore.google.com/detail/qa-bug-→-regression-test/khoelciicbkdeieibchdndccdncpelbg?authuser=1&amp;amp;hl=tr&lt;/a&gt;&lt;br&gt;
🎬 Quick Demo (YouTube): &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.youtube.com/watch?v=GrtotYTfhbg&quot;&gt;https://www.youtube.com/watch?v=GrtotYTfhbg&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I’d love to hear your feedback on how this fits into your daily QA/developer workflow! Try it out and let me know your thoughts below! 👇&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/30910/stop-reproducing-bugs-twice-record-once-get-both-markdown-report-playwright-regression</guid>
<pubDate>Tue, 13 Oct 2026 08:53:10 +0000</pubDate>
</item>
<item>
<title>A Failed Test Is a Clue, Not a Diagnosis</title>
<link>https://coderlegion.com/26540/a-failed-test-is-a-clue-not-a-diagnosis</link>
<description>&lt;p&gt;An end-to-end test fails.&lt;/p&gt;
&lt;p&gt;The report is red.&lt;/p&gt;
&lt;p&gt;Someone asks, “Is it a bug?”&lt;/p&gt;
&lt;p&gt;Maybe.&lt;/p&gt;
&lt;p&gt;But at that moment, all we really know is that the test didn't observe the expected behavior.&lt;/p&gt;
&lt;p&gt;That distinction sounds small, but it changed the way I investigate failures.&lt;/p&gt;
&lt;p&gt;When I started working more deeply with automation, I gradually learned that a failed test is not a diagnosis. It's the beginning of an investigation.&lt;/p&gt;
&lt;h3 id=&quot;the-same-failure-can-have-very-different-causes&quot;&gt;The same failure can have very different causes&lt;/h3&gt;
&lt;p&gt;Imagine an automated checkout test that expects an order to be created.&lt;/p&gt;
&lt;p&gt;The test fails because the order confirmation never appears.&lt;/p&gt;
&lt;p&gt;The cause could be an application defect. But it could also be a failed API request, unavailable service, incorrect test data, expired credentials, a deployment issue, an environment configuration problem, or a timing issue in the test.&lt;/p&gt;
&lt;p&gt;All of those can produce a similar result in the report.&lt;/p&gt;
&lt;p&gt;If we immediately label the failure as a product bug, we may send developers looking in the wrong place.&lt;/p&gt;
&lt;p&gt;If we immediately label it as a flaky test, we may hide a real defect.&lt;/p&gt;
&lt;p&gt;The first job is to find out which one it is.&lt;/p&gt;
&lt;h3 id=&quot;start-with-the-failure-not-the-assumption&quot;&gt;Start with the failure, not the assumption&lt;/h3&gt;
&lt;p&gt;My first step is to understand exactly what failed.&lt;/p&gt;
&lt;p&gt;Was it an assertion? A timeout? A missing element? An HTTP error? Did the test fail before the application was even reached?&lt;/p&gt;
&lt;p&gt;The details matter.&lt;/p&gt;
&lt;p&gt;A test that receives a 500 response is different from a test that cannot connect to the server. A timeout waiting for a button is different from a timeout waiting for an API response.&lt;/p&gt;
&lt;p&gt;I also want to know whether the failure is reproducible.&lt;/p&gt;
&lt;p&gt;Does it happen every time? Only in CI? Only in one environment? Only when tests run in parallel? Did it start after a particular deployment?&lt;/p&gt;
&lt;p&gt;Those questions help narrow the problem before anyone starts changing code.&lt;/p&gt;
&lt;h3 id=&quot;check-whether-the-application-is-actually-healthy&quot;&gt;Check whether the application is actually healthy&lt;/h3&gt;
&lt;p&gt;One of the most useful habits I developed was to stop looking only at the test report.&lt;/p&gt;
&lt;p&gt;If an API test fails, I want to know whether the API is responding outside the test.&lt;/p&gt;
&lt;p&gt;If an end-to-end test fails, I want to know whether the underlying service is healthy.&lt;/p&gt;
&lt;p&gt;A simple request, a health endpoint, or a look at the service logs can reveal that the test is only reporting a symptom of a larger problem.&lt;/p&gt;
&lt;p&gt;For example, a login test might fail because the authentication service is unavailable.&lt;/p&gt;
&lt;p&gt;Changing the Playwright locator won't fix that.&lt;/p&gt;
&lt;p&gt;Neither will adding another ten seconds to the timeout.&lt;/p&gt;
&lt;h3 id=&quot;environment-differences-matter&quot;&gt;Environment differences matter&lt;/h3&gt;
&lt;p&gt;I remember how confusing DEV, QA, STG, and PROD were when I first entered QA.&lt;/p&gt;
&lt;p&gt;Today, environment differences are one of the first things I consider during an investigation.&lt;/p&gt;
&lt;p&gt;The same code can behave differently because of configuration, data, dependencies, feature flags, external integrations, or infrastructure.&lt;/p&gt;
&lt;p&gt;If a test passes locally but fails in CI, I want to compare the conditions.&lt;/p&gt;
&lt;p&gt;Are the same versions running? Is the test using the same configuration? Are required services available? Is the data equivalent? Are there resource constraints? Is there a difference in browser or runtime versions?&lt;/p&gt;
&lt;p&gt;“Works on my machine” isn't a diagnosis either.&lt;/p&gt;
&lt;p&gt;It's another clue.&lt;/p&gt;
&lt;h3 id=&quot;logs-connect-the-test-to-the-system&quot;&gt;Logs connect the test to the system&lt;/h3&gt;
&lt;p&gt;This is where my long-standing interest in Linux and Bash became especially useful.&lt;/p&gt;
&lt;p&gt;I don't need to understand every internal detail of a service to start investigating it.&lt;/p&gt;
&lt;p&gt;But I do need to know how to find relevant information.&lt;/p&gt;
&lt;p&gt;Application logs, container logs, system services, network responses, and CI output can help connect the failure in the test to what actually happened in the system.&lt;/p&gt;
&lt;p&gt;The important skill isn't memorizing a hundred commands.&lt;/p&gt;
&lt;p&gt;It's knowing what question you're trying to answer.&lt;/p&gt;
&lt;p&gt;Did the request reach the service? Did the service reject it? Did a dependency fail? Was the process restarted? Was there an error at the same time as the test failure?&lt;/p&gt;
&lt;p&gt;When the timestamps and evidence line up, the investigation becomes much more useful.&lt;/p&gt;
&lt;h3 id=&quot;don-t-fix-flakiness-by-hiding-it&quot;&gt;Don't fix flakiness by hiding it&lt;/h3&gt;
&lt;p&gt;Flaky tests are frustrating, especially when they slow down a team.&lt;/p&gt;
&lt;p&gt;But adding retries or longer waits without understanding the cause can make the situation worse.&lt;/p&gt;
&lt;p&gt;Sometimes a retry is a reasonable mitigation. But it should not become a substitute for investigating why the test is unreliable.&lt;/p&gt;
&lt;p&gt;Is the application genuinely slow? Is the test waiting for the wrong condition? Is shared test data causing interference? Are tests running in parallel without proper isolation? Is the environment overloaded?&lt;/p&gt;
&lt;p&gt;A test that passes on the third attempt may still be telling you something important.&lt;/p&gt;
&lt;p&gt;The question is whether you understand what that something is.&lt;/p&gt;
&lt;h3 id=&quot;test-data-deserves-more-attention-than-it-gets&quot;&gt;Test data deserves more attention than it gets&lt;/h3&gt;
&lt;p&gt;Test data is another common source of misleading failures.&lt;/p&gt;
&lt;p&gt;An account might already exist. A record may have been modified by another test. An external system may have changed state. A cleanup step may not have run.&lt;/p&gt;
&lt;p&gt;A test can be technically correct and still fail because its assumptions about data are no longer true.&lt;/p&gt;
&lt;p&gt;This is why I increasingly value predictable setup, isolation, cleanup, and clear ownership of test data.&lt;/p&gt;
&lt;p&gt;Reliable automation isn't only about good assertions.&lt;/p&gt;
&lt;p&gt;It's also about controlling the conditions under which those assertions run.&lt;/p&gt;
&lt;h3 id=&quot;look-at-the-change-that-happened-before-the-failure&quot;&gt;Look at the change that happened before the failure&lt;/h3&gt;
&lt;p&gt;When a previously stable test starts failing, I want to know what changed.&lt;/p&gt;
&lt;p&gt;A new commit? A dependency update? A deployment? A configuration change? A database migration? A new feature flag?&lt;/p&gt;
&lt;p&gt;The recent change isn't automatically the cause, but it provides useful context.&lt;/p&gt;
&lt;p&gt;This is also where understanding CI/CD becomes valuable for QA.&lt;/p&gt;
&lt;p&gt;A pipeline isn't just a place where tests run. It contains information about the build, dependencies, environment, and changes that produced the result.&lt;/p&gt;
&lt;p&gt;The more of that context you can read, the less you have to guess.&lt;/p&gt;
&lt;h3 id=&quot;a-useful-investigation-produces-more-than-fixed-&quot;&gt;A useful investigation produces more than “fixed”&lt;/h3&gt;
&lt;p&gt;Eventually, the failure is resolved.&lt;/p&gt;
&lt;p&gt;Maybe it was an application bug. Maybe the test needed a better wait condition. Maybe a service was unavailable. Maybe the data setup was unreliable.&lt;/p&gt;
&lt;p&gt;But I think a good investigation should leave behind something more useful than a green rerun.&lt;/p&gt;
&lt;p&gt;What was the actual cause? How did we confirm it? Could the same failure happen again? Can we improve the test, environment, monitoring, or process so it's easier to diagnose next time?&lt;/p&gt;
&lt;p&gt;A failure is an opportunity to improve the system's ability to explain itself.&lt;/p&gt;
&lt;p&gt;That matters to QA, DevOps, and everyone responsible for reliable delivery.&lt;/p&gt;
&lt;h3 id=&quot;the-broader-lesson&quot;&gt;The broader lesson&lt;/h3&gt;
&lt;p&gt;The deeper I moved into automation, the more I realized that debugging requires an expanding field of view.&lt;/p&gt;
&lt;p&gt;Sometimes the answer is in the test.&lt;/p&gt;
&lt;p&gt;Sometimes it's in the application.&lt;/p&gt;
&lt;p&gt;Sometimes it's in the environment, CI, infrastructure, or deployment history.&lt;/p&gt;
&lt;p&gt;You don't need to be an expert in every layer to investigate effectively.&lt;/p&gt;
&lt;p&gt;But you do need to be willing to look beyond the layer where the failure first appeared.&lt;/p&gt;
&lt;p&gt;A red test is useful evidence.&lt;/p&gt;
&lt;p&gt;It tells us something didn't go as expected.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The real engineering work is finding out why.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;This is the second article in my &lt;strong&gt;From QA to DevOps / Release Engineering&lt;/strong&gt; series.&lt;/p&gt;
&lt;p&gt;When an automated test fails in your team, what's the first thing you check outside the test report?&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/26540/a-failed-test-is-a-clue-not-a-diagnosis</guid>
<pubDate>Wed, 09 Sep 2026 04:57:38 +0000</pubDate>
</item>
<item>
<title>It Took Me 20 Years to Come Back to Tech</title>
<link>https://coderlegion.com/26075/it-took-me-20-years-to-come-back-to-tech</link>
<description>&lt;h2 id=&quot;it-took-me-20-years-to-come-back-to-tech&quot;&gt;It Took Me 20 Years to Come Back to Tech&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Dev Journey | CoderLegion&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;What happens when someone who discovered programming as a child spends nearly two decades working in a completely different industry—and then finds their way back into technology?&lt;/p&gt;
&lt;p&gt;For &lt;strong&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://coderlegion.com/user/JankoD84&quot;&gt;Jan Duris (@JankoD84)&lt;/a&gt;&lt;/strong&gt;, the answer is a journey through programming, Linux, mechanical engineering, CNC, QA, test automation, DevOps, release engineering, and eventually building his own SaaS product.&lt;/p&gt;
&lt;p&gt;Jan's relationship with technology began when he was a child experimenting with computers and programming. He later moved into mechanical engineering, where programming continued to appear in a very different form through CNC machines.&lt;/p&gt;
&lt;p&gt;Almost twenty years passed before he returned to IT professionally.&lt;/p&gt;
&lt;p&gt;His first IT role was in QA, where he had to learn an entirely new world of software development, environments, testing, and processes. From there, he gradually moved into automation, Python, Playwright, CI/CD, DevOps, and release engineering.&lt;/p&gt;
&lt;p&gt;Today, Jan works as a QA Automation Engineer and builder, focusing on software quality, release reliability, developer tooling, and AI-assisted delivery. He is also building &lt;strong&gt;Dulvarn&lt;/strong&gt;, a release intelligence platform designed to help teams make better release decisions using evidence, automation, and AI.&lt;/p&gt;
&lt;p&gt;This is his story.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;it-took-me-20-years-to-come-back-to-tech-1&quot;&gt;It Took Me 20 Years to Come Back to Tech&lt;/h3&gt;
&lt;p&gt;My career in technology didn't begin when I got my first QA job.&lt;/p&gt;
&lt;p&gt;In a strange way, it began when I was about four years old.&lt;/p&gt;
&lt;p&gt;Every year during the summer holidays, I used to spend two or three months at my great-grandmother's house in the Czech Republic.&lt;/p&gt;
&lt;p&gt;There was a small storage room upstairs.&lt;/p&gt;
&lt;p&gt;I spent entire days there with my mother's cousin.&lt;/p&gt;
&lt;p&gt;For most people, a storage room probably doesn't sound like the beginning of a journey into technology.&lt;/p&gt;
&lt;p&gt;For me, somehow, it was.&lt;/p&gt;
&lt;p&gt;That was where computers first became something more than machines.&lt;/p&gt;
&lt;p&gt;They became something I wanted to understand.&lt;/p&gt;
&lt;p&gt;I had no idea what software engineering was.&lt;/p&gt;
&lt;p&gt;I didn't know what QA meant.&lt;/p&gt;
&lt;p&gt;There was no DevOps, CI/CD, cloud infrastructure, AI coding assistant, or SaaS product in my world.&lt;/p&gt;
&lt;p&gt;There was just curiosity.&lt;/p&gt;
&lt;p&gt;And a question that has stayed with me for most of my life:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;How does this actually work?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h3 id=&quot;my-first-programming-experience-came-before-i-really-knew-what-a-career-was&quot;&gt;My First Programming Experience Came Before I Really Knew What a Career Was&lt;/h3&gt;
&lt;p&gt;While I was still in elementary school, I started attending a programming course.&lt;/p&gt;
&lt;p&gt;We worked on PMD 85 computers.&lt;/p&gt;
&lt;p&gt;For anyone who grew up with modern laptops, cloud IDEs, GitHub, and AI assistants, those machines probably look almost prehistoric now.&lt;/p&gt;
&lt;p&gt;But for me, they were fascinating.&lt;/p&gt;
&lt;p&gt;I learned things like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BASIC&lt;/li&gt;
&lt;li&gt;Pascal&lt;/li&gt;
&lt;li&gt;Turbo Pascal&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There was something magical about writing instructions and seeing a machine respond to them.&lt;/p&gt;
&lt;p&gt;Later I got my first computer of my own: a Didaktik Compact.&lt;/p&gt;
&lt;p&gt;That gave me the freedom to experiment by myself.&lt;/p&gt;
&lt;p&gt;There was no carefully structured learning roadmap.&lt;/p&gt;
&lt;p&gt;No &quot;become a developer in 12 weeks&quot; course.&lt;/p&gt;
&lt;p&gt;I learned because I wanted to make the machine do things.&lt;/p&gt;
&lt;p&gt;I broke things.&lt;/p&gt;
&lt;p&gt;I tried again.&lt;/p&gt;
&lt;p&gt;I read whatever I could find.&lt;/p&gt;
&lt;p&gt;And slowly, programming became something familiar.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;then-i-discovered-linux&quot;&gt;Then I Discovered Linux&lt;/h3&gt;
&lt;p&gt;Linux became another important part of that journey.&lt;/p&gt;
&lt;p&gt;I started experimenting with some of the distributions that were available at the time.&lt;/p&gt;
&lt;p&gt;Again, I wasn't thinking about a career.&lt;/p&gt;
&lt;p&gt;I wasn't building a portfolio.&lt;/p&gt;
&lt;p&gt;I wasn't trying to optimize my LinkedIn profile.&lt;/p&gt;
&lt;p&gt;I was simply interested in what was happening underneath the graphical interface.&lt;/p&gt;
&lt;p&gt;Filesystems.&lt;/p&gt;
&lt;p&gt;Processes.&lt;/p&gt;
&lt;p&gt;Commands.&lt;/p&gt;
&lt;p&gt;Configuration.&lt;/p&gt;
&lt;p&gt;Bash.&lt;/p&gt;
&lt;p&gt;That relationship with Linux never really disappeared.&lt;/p&gt;
&lt;p&gt;Even today, Linux and Bash still feel like home to me.&lt;/p&gt;
&lt;p&gt;They have followed me through different parts of my career, even during the years when programming itself moved into the background.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;then-life-took-me-somewhere-completely-different&quot;&gt;Then Life Took Me Somewhere Completely Different&lt;/h3&gt;
&lt;p&gt;Teenage years arrived.&lt;/p&gt;
&lt;p&gt;Programming became less important.&lt;/p&gt;
&lt;p&gt;Games became more important.&lt;/p&gt;
&lt;p&gt;Technology was still around me, and Linux never completely disappeared, but I stopped imagining programming as the obvious direction of my life.&lt;/p&gt;
&lt;p&gt;Then came secondary school.&lt;/p&gt;
&lt;p&gt;I ended up studying mechanical engineering.&lt;/p&gt;
&lt;p&gt;It wasn't exactly the future I had dreamed about when I was younger.&lt;/p&gt;
&lt;p&gt;But sometimes a decision you make early in life defines much more of your future than you expect.&lt;/p&gt;
&lt;p&gt;Mechanical engineering became my professional world for roughly the next twenty years.&lt;/p&gt;
&lt;p&gt;I worked as a mechanical designer and technologist.&lt;/p&gt;
&lt;p&gt;I worked with manufacturing processes.&lt;/p&gt;
&lt;p&gt;I worked with technical drawings and 3D components.&lt;/p&gt;
&lt;p&gt;And I programmed CNC machines.&lt;/p&gt;
&lt;p&gt;So programming never really disappeared.&lt;/p&gt;
&lt;p&gt;It just changed form.&lt;/p&gt;
&lt;p&gt;Instead of telling a computer how to process data, I was telling machines how to manufacture physical components.&lt;/p&gt;
&lt;p&gt;And in hindsight, the two worlds taught me many of the same things.&lt;/p&gt;
&lt;p&gt;Precision matters.&lt;/p&gt;
&lt;p&gt;Processes matter.&lt;/p&gt;
&lt;p&gt;Small assumptions matter.&lt;/p&gt;
&lt;p&gt;You need to understand what happens before and after your own part of the work.&lt;/p&gt;
&lt;p&gt;And when something goes wrong, the cause is not always where the failure becomes visible.&lt;/p&gt;
&lt;p&gt;I didn't know it at the time, but those lessons would later become very useful in QA.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;the-dream-of-working-in-it-never-completely-disappeared&quot;&gt;The Dream of Working in IT Never Completely Disappeared&lt;/h3&gt;
&lt;p&gt;Even after years in mechanical engineering, IT was still somewhere in the back of my mind.&lt;/p&gt;
&lt;p&gt;It was one of those things you tell yourself you might return to someday.&lt;/p&gt;
&lt;p&gt;The problem with &quot;someday&quot; is that it can easily turn into twenty years.&lt;/p&gt;
&lt;p&gt;Then I met the woman who became my wife.&lt;/p&gt;
&lt;p&gt;And sometimes another person sees something in you that you have stopped acting on yourself.&lt;/p&gt;
&lt;p&gt;She knew that working in IT had been something I had wanted since I was young.&lt;/p&gt;
&lt;p&gt;She encouraged me to finally do something about it.&lt;/p&gt;
&lt;p&gt;To take an entry-level IT course.&lt;/p&gt;
&lt;p&gt;I agreed.&lt;/p&gt;
&lt;p&gt;But I had one condition.&lt;/p&gt;
&lt;p&gt;She had to do the course with me.&lt;/p&gt;
&lt;p&gt;IT wasn't her field at all.&lt;/p&gt;
&lt;p&gt;That actually made me respect her even more for agreeing.&lt;/p&gt;
&lt;p&gt;We went through it together.&lt;/p&gt;
&lt;p&gt;I helped her heavily with the technical parts, and by the end it sometimes felt like I had completed the course for two people.&lt;/p&gt;
&lt;p&gt;I didn't mind.&lt;/p&gt;
&lt;p&gt;I still don't.&lt;/p&gt;
&lt;p&gt;Because what mattered was what happened next.&lt;/p&gt;
&lt;p&gt;After about twenty years away from the career I had imagined as a child, I finally had a real path back into technology.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;my-first-it-job-was-in-qa&quot;&gt;My First IT Job Was in QA&lt;/h3&gt;
&lt;p&gt;My first job in IT was at SolarWinds in the Czech Republic.&lt;/p&gt;
&lt;p&gt;Getting it changed much more than my job title.&lt;/p&gt;
&lt;p&gt;We moved to Brno for the opportunity.&lt;/p&gt;
&lt;p&gt;I had finally made the transition.&lt;/p&gt;
&lt;p&gt;And then I discovered something uncomfortable.&lt;/p&gt;
&lt;p&gt;Getting into IT and understanding IT are two very different things.&lt;/p&gt;
&lt;p&gt;I was entering an industry with years of technical experience behind me, but software development had its own language.&lt;/p&gt;
&lt;p&gt;Its own processes.&lt;/p&gt;
&lt;p&gt;Its own mental models.&lt;/p&gt;
&lt;p&gt;Things that seem completely normal to me today were confusing at the beginning.&lt;/p&gt;
&lt;p&gt;Even environments.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;DEV
QA
STG
PROD
&lt;/code&gt;&lt;/pre&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/26075/it-took-me-20-years-to-come-back-to-tech</guid>
<pubDate>Wed, 02 Sep 2026 11:36:24 +0000</pubDate>
</item>
<item>
<title>Everyone’s online. But not everyone’s in focus.</title>
<link>https://coderlegion.com/24878/everyones-online-but-not-everyones-in-focus</link>
<description>&lt;p&gt;&lt;strong&gt;Everyone’s online. But not everyone’s in focus.&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;Software teams are constantly shipping new features, fixing bugs, and preparing for the next release.&lt;/p&gt;
&lt;p&gt;But with every release comes the same repetitive testing:&lt;/p&gt;
&lt;p&gt;Login. Signup. Search. Forms. Checkout. Regression.&lt;/p&gt;
&lt;p&gt;The product changes, but many of these tests stay the same.&lt;/p&gt;
&lt;p&gt;And when your team spends hours repeating the same tests, there’s less time for what really matters — finding new issues, improving the product, and building better experiences.&lt;/p&gt;
&lt;p&gt;That’s where &lt;strong&gt;QAlity&lt;/strong&gt; comes in.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;QAlity&lt;/strong&gt; helps teams automate repetitive tests so they can spend less time on busywork and more time focused on quality.&lt;/p&gt;
&lt;p&gt;Less repetition.&lt;br&gt;
Fewer distractions.&lt;br&gt;
More impact.&lt;/p&gt;
&lt;p&gt;Focus on what matters. Automate the rest.&lt;/p&gt;
&lt;p&gt;👉 Get started at &lt;strong&gt;qality.dev&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;#QAlity #TestAutomation #SoftwareTesting #QA #QualityEngineering&lt;/strong&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/24878/everyones-online-but-not-everyones-in-focus</guid>
<pubDate>Wed, 19 Aug 2026 05:47:14 +0000</pubDate>
</item>
<item>
<title>Simulating natural selection to solve computer science problems!</title>
<link>https://coderlegion.com/8014/simulating-natural-selection-to-solve-computer-science-problems</link>
<description>&lt;p&gt;Simulating natural selection to solve computer science problems!&lt;br&gt;
While researching some of the newer developments in computer science, I explored using a Genetic Algorithm to automatically &quot;evolve&quot; a high quality test suite for a tricky e-commerce pricing function. The algorithm learns the validation rules and generates a concise set of intelligent tests on its own.&lt;/p&gt;
&lt;p&gt;I've written a full, step-by-step guide explaining how the Python code works from the fitness function to crossover and mutation. You can also checkout a written paper explaining the motivation and logic behind the exploration.&lt;/p&gt;
&lt;p&gt;Check out the paper here:&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/ShivangVora1206/Genetic-Algorithm/blob/main/paper.pdf&quot;&gt;https://github.com/ShivangVora1206/Genetic-Algorithm/blob/main/paper.pdf&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Check out the developer's guide here on dev.to:&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/shivangvora1206/a-developers-guide-to-test-case-generation-with-genetic-algorithms-4mef&quot;&gt;https://dev.to/shivangvora1206/a-developers-guide-to-test-case-generation-with-genetic-algorithms-4mef&lt;/a&gt;&lt;/p&gt;
</description>
<category>Test Automation</category>
<guid isPermaLink="true">https://coderlegion.com/8014/simulating-natural-selection-to-solve-computer-science-problems</guid>
<pubDate>Mon, 01 Dec 2025 12:23:44 +0000</pubDate>
</item>
<item>
<title>How to Achieve Automated Testing Within Sprint?</title>
<link>https://coderlegion.com/1095/how-to-achieve-automated-testing-withinsprint</link>
<description>&lt;h2 id=&quot;how-to-achieve-automated-testing-within-sprint-&quot;&gt;How to Achieve Automated Testing Within Sprint?&lt;/h2&gt;
&lt;p&gt;In the debate over whether automated testing should wait until development is completed, one compelling argument for early testing is the use of dummy test cases. Dummy test cases are simple, placeholder tests that can be implemented early in the development process to ensure that the testing framework is in place and functioning correctly. This article explores how to implement dummy test cases and how they can encourage a culture of early automated testing.&lt;/p&gt;
&lt;h2 id=&quot;what-are-dummy-test-cases-&quot;&gt;&lt;strong&gt;What are Dummy Test Cases?&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Dummy test cases are basic, often minimalistic tests that serve as placeholders in the early stages of development. They are not meant to thoroughly test the application but to ensure that the testing infrastructure is set up correctly and to provide a foundation for more comprehensive tests later on.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Let's Understand the concept of Dummy Tests by real world example&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;dummy-tests-for-a-login-feature&quot;&gt;&lt;strong&gt;Dummy Tests for a Login Feature&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Let's create some dummy tests for a login feature using Playwright (you can write for Selenium, Cypress, webdriver.io in similar way). These tests will serve as placeholders and ensure that the testing framework is set up correctly.&lt;br&gt;
Setting Up Playwright -&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm install - save-dev playwright
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;creating-dummy-tests&quot;&gt;&lt;strong&gt;Creating Dummy Tests&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;To keep the dummy test data in a separate file and segregate the test and data, you can follow these steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a Separate File for Dummy Test Data&lt;/li&gt;
&lt;li&gt;Move Dummy Test Data to the New File&lt;/li&gt;
&lt;li&gt;Import and Use Dummy Test Data in Your Test File&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;step-1-create-and-move-dummy-test-data-to-the-new-file&quot;&gt;&lt;strong&gt;Step 1: Create and Move Dummy Test Data to the New File&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Create a new file named dummyTestData.ts in the tests folder. Move the dummy test data to the new file dummyTestData.ts:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// tests/dummyTestData.ts

export const loginTestData = {
    validUser: {
        username: 'validUser',
        password: 'validPass',
    },
    invalidUser: {
        username: 'invalidUser',
        password: 'invalidPass',
    },
    // TBA = To Be Added
    selectors: {
        loginForm: 'TBA',
        loginButton: 'TBA',
        usernameInput: 'TBA',
        passwordInput: 'TBA',
        errorMessage: 'TBA',
        welcomeMessage: 'TBA',
    },
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;step-2-import-and-use-dummy-test-data-in-your-test-file&quot;&gt;&lt;strong&gt;Step 2: Import and Use Dummy Test Data in Your Test File&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Import the dummy test data into your test file and use it in your tests. For example, in login.test.ts:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// tests/login.test.ts

import { test, expect } from '@playwright/test';
import { loginTestData } from './dummyTestData';

test.describe('Login Feature', () =&amp;gt; {
    test('Dummy Test Case 1: Page should have a login form', async ({ page }) =&amp;gt; {
        await page.goto('https://example.com/login');
        const loginForm = await page.$(loginTestData.selectors.loginForm);
        expect(loginForm).not.toBeNull();
    });

    test('Dummy Test Case 2: Login button should be disabled initially', async ({ page }) =&amp;gt; {
        await page.goto('https://example.com/login');
        const loginButton = await page.$(loginTestData.selectors.loginButton);
        const isDisabled = await loginButton?.isDisabled();
        expect(isDisabled).toBe(true);
    });

    test('Dummy Test Case 3: Should display error message for invalid credentials', async ({ page }) =&amp;gt; {
        await page.goto('https://example.com/login');
        await page.fill(loginTestData.selectors.usernameInput, loginTestData.invalidUser.username);
        await page.fill(loginTestData.selectors.passwordInput, loginTestData.invalidUser.password);
        await page.click(loginTestData.selectors.loginButton);
        const errorMessage = await page.$(loginTestData.selectors.errorMessage);
        expect(errorMessage).not.toBeNull();
    });

    // Add real tests here as development progresses
    test('Real Test Case: Successful login', async ({ page }) =&amp;gt; {
        await page.goto('https://example.com/login');
        await page.fill(loginTestData.selectors.usernameInput, loginTestData.validUser.username);
        await page.fill(loginTestData.selectors.passwordInput, loginTestData.validUser.password);
        await page.click(loginTestData.selectors.loginButton);
        await page.waitForNavigation();
        const welcomeMessage = await page.$(loginTestData.selectors.welcomeMessage);
        expect(welcomeMessage).not.toBeNull();
    });
});
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;explanation&quot;&gt;&lt;strong&gt;Explanation&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;dummyTestData.ts&lt;/em&gt;: This file contains the dummy test data. The loginTestData object holds the test data for the login feature, including valid and invalid user credentials and selectors.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;login.test.ts&lt;/em&gt;: This file imports the loginTestData object and uses it in the dummy test cases. This keeps the test data separate from the test logic, making the code more organized and maintainable.&lt;/p&gt;
&lt;h3 id=&quot;running-the-tests&quot;&gt;&lt;strong&gt;Running the Tests&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Run the tests using the Playwright Test runner:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npx playwright test
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;benefits-of-dummy-test-cases&quot;&gt;&lt;strong&gt;Benefits of Dummy Test Cases&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Early Detection of Issues&lt;/em&gt;: By implementing dummy test cases early, teams can identify and resolve issues with the testing framework, dependencies, and configurations before they become critical problems.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Continuous Feedback&lt;/em&gt;: Dummy test cases provide continuous feedback to developers, ensuring that the basic functionality of the application is being tested from the outset.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Encourages a Testing Culture&lt;/em&gt;: Implementing dummy test cases early in the development process encourages a culture of testing within the team. It sets the expectation that testing is an integral part of development, not an afterthought.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Reduces Technical Debt&lt;/em&gt;: Early testing helps to identify and fix issues before they accumulate, reducing technical debt and making the codebase more maintainable.&lt;br&gt;
Facilitates Test-Driven Development (TDD): Encourage TDD approach where tests are written before the actual code.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Cost-Effective&lt;/em&gt;: Implementing dummy tests requires minimal effort and resources, making it a cost-effective way to improve the testing process.&lt;br&gt;
Improves Test Coverage: Dummy tests provide a baseline level of test coverage, ensuring that at least the basic functionality is being tested.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;This approach encourages early automated testing, providing continuous feedback and fostering a culture of quality within the development team. By keeping the dummy test data in a separate file, you can maintain a clean and organized codebase. This approach allows you to easily manage and update test data while keeping your test files focused on the test logic. This practice encourages early automated testing and helps in maintaining a high level of code quality throughout the development lifecycle.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;If you enjoyed this story, please like and share to help others find it! Feel free to leave a comment below.&lt;/p&gt;
</description>
<category>AI Ethics</category>
<guid isPermaLink="true">https://coderlegion.com/1095/how-to-achieve-automated-testing-withinsprint</guid>
<pubDate>Thu, 06 Feb 2025 20:21:38 +0000</pubDate>
</item>
</channel>
</rss>