[{"content":"Early on in my testing career, I would test all of the content in the Content Management System (CMS) I was working with. This included external links that were pointed to other websites outside of the company I worked for. This worked fine for a while, especially on pages that were recently updated. However, this would change when I implemented random page testing. I started to have tests failing from dead links taking forever to load. This turned my consistent tests into brittle tests that were at the whims of our content editors. At the time, I was a team of one person (minus my manager). I had no idea what to do to solve this issue, but I knew I had to come up with a plan.\nI spent a weekend pondering the idea. The thing that kept annoying me was that I was testing someone else\u0026rsquo;s content, with no easy way to avoid the hidden landmines that were dead links. I had started coding in HTTP calls to check if a link was a 404 or another error code, when it finally hit me. I don\u0026rsquo;t need to actually click the link to ensure it loads properly, I can just do an HTTP call and ensure the correct HTML elements were in place so the link opens in a new tab! I shared the idea to my manager and our Project Owner, and they both liked the idea. With their approvals on my side, I immediately got it implemented.\nAll the implementation was fairly simple: I verified that a link was external if the base URL did not match the website\u0026rsquo;s URL, ensured that said link also included target='_blank' and rel='noreferrer noopener' (preferably both) on their tag attributes so the link opens in a new tab, and lastly performing an HTTP call to check if the site was a 200 or some kind of error link. This not only solved test flakiness, but also sped testings up.\nFlash forward years later, and this is still something I do. It was even a part of a conference talk I did back in 2025. I shared this concept to a crowd of QA testers because this is an idea that I do believe all testers should adopt to. It\u0026rsquo;s what I wish I was told when I was just a newbie at QA trying to solve this issue. To summarize, avoid click interactions external link on the project you are working. Use HTML attributes to ensure an external link will open in a new tab, and use a simple HTTP call to see if the link is dead. It will save you from constant debugging and saves time in testing.\n","date":"17 May 2026","externalUrl":null,"permalink":"/blog/external-link/","section":"Blog","summary":"","title":"External Link Testing: The Don'ts (and mostly Don'ts)","type":"blog"},{"content":"In 2022, I went to the Columbus based QA conference QA or the Highway for the first time. This was my first ever work conference, so I was very excited to attend an event with so many people in my line of work. While I don\u0026rsquo;t recall most of that conference, there is one presentation that still sticks with me.\nThat presentation, which the name and speaker are lost to me unfortunately, focused on how you can make your automated tests better. One of the ways that was talked about was avoiding stale tests by testing the same page over and over again. While testing the same thing over and over again is kind of part of our job, doing so on the same page with the same content will rarely produce a different outcome. This is when the speaker said that they randomly select a page to perform testing again. They did this for both positive and negative tests. Needless to say, my mind was blown and I had schemes cooking in my brain as to what to do when I got back to work.\nWhen I returned to work the following Monday, I set off to add random page selection to my automation. I ended up having two iterations of it. The first version used an HTML sitemap for a content management system and I used Selenium to gather every page. This worked poorly, admittedly. This is because when a site has around 100 links, it works fast\u0026hellip; However if you reach over 5000 pages and links Selenium really gets bogged down. So while I was getting random pages, my tests had an added 30+ seconds to get said random page.\nVersion two worked so much better. I discovered that there was an xml version of the same sitemap. I then realized I could pull down the xml using an hTTP call and turn it into a List object. I could then use the Random class to select a random page. Flash forward to now, where I still use this code. I even enhanced it further, so I can now feed that method filter paths to specific kinds of pages.\nIf it wasn\u0026rsquo;t for QA or the Highway, I would still be dealing with stale tests and hardcoded tests everywhere. I am very grateful that my (former) coworker shared this conference with our team, and that I\u0026rsquo;ve been able to go for almost half a decade. Maybe some day I could even present there! Who knows!\n","date":"17 May 2026","externalUrl":null,"permalink":"/blog/random-page-testing/","section":"Blog","summary":"","title":"Random Page Testing: The Best Way to Avoid Stale Tests","type":"blog"},{"content":"At the start of 2026, my manager made it a goal for our team to gather more data for our test runs. The only way I could before this was with my HTML reports, but there was no way to digest this data to show it in charts. So, I started to plan out how I could get metrics on all of our test runs so we could report the total number of tests ran, failures/passes and how long they took (aka, how much manual testing time we\u0026rsquo;ve saved).\nTo start, I looked at my xUnit runner json that I had already. I was thinking that there may be something there I could use to help me get more numbers. That\u0026hellip; was not the case. The xUnit runner was really only used to help make sure tests ran the way you want them to. Here\u0026rsquo;s an example of this json file that one could make to for xUnit:\n{ \u0026#34;$schema\u0026#34;: \u0026#34;https://xunit.net/schema/current/xunit.runner.schema.json\u0026#34;, \u0026#34;parallelizeAssembly\u0026#34;: true, \u0026#34;parallelizeTestCollections\u0026#34;: true, \u0026#34;maxParallelThreads\u0026#34;: 5 } That specific example allows up to 5 classes to run at any given time at the same time.\nSo, I did more digging. I knew that dotnet test generated a file called a .trx, when you run it on an Azure CI/CD pipeline. Focusing on that, I found you can make a .runsettings file that dotnet test can use to generate trx files in a specific folder (if set properly). Below is an example of a .runsettings:\n\u0026lt;?xml version=\u0026#34;1.0\u0026#34; encoding=\u0026#34;utf-8\u0026#34;?\u0026gt; \u0026lt;RunSettings\u0026gt; \u0026lt;!-- Configurations that affect the Test Framework --\u0026gt; \u0026lt;RunConfiguration\u0026gt; \u0026lt;MaxCpuCount\u0026gt;1\u0026lt;/MaxCpuCount\u0026gt; \u0026lt;ResultsDirectory\u0026gt;.\\TestResults\u0026lt;/ResultsDirectory\u0026gt; \u0026lt;/RunConfiguration\u0026gt; \u0026lt;LoggerRunSettings\u0026gt; \u0026lt;Loggers\u0026gt; \u0026lt;Logger friendlyName=\u0026#34;trx\u0026#34; enabled=\u0026#34;True\u0026#34;\u0026gt; \u0026lt;Configuration\u0026gt; \u0026lt;LogFileName\u0026gt;foo.trx\u0026lt;/LogFileName\u0026gt; \u0026lt;/Configuration\u0026gt; \u0026lt;/Logger\u0026gt; \u0026lt;Logger friendlyName=\u0026#34;blame\u0026#34; enabled=\u0026#34;True\u0026#34; /\u0026gt; \u0026lt;/Loggers\u0026gt; \u0026lt;/LoggerRunSettings\u0026gt; \u0026lt;/RunSettings\u0026gt; This file would generate trx files in a TestResults folder.\nI also learned that you can have the two merged apparently, but it failed to work for me. Let\u0026rsquo;s take the two examples I\u0026rsquo;ve made to make one .runsettings anyway:\n\u0026lt;?xml version=\u0026#34;1.0\u0026#34; encoding=\u0026#34;utf-8\u0026#34;?\u0026gt; \u0026lt;RunSettings\u0026gt; \u0026lt;!-- Configurations that affect the Test Framework --\u0026gt; \u0026lt;RunConfiguration\u0026gt; \u0026lt;MaxCpuCount\u0026gt;1\u0026lt;/MaxCpuCount\u0026gt; \u0026lt;ResultsDirectory\u0026gt;.\\TestResults\u0026lt;/ResultsDirectory\u0026gt; \u0026lt;/RunConfiguration\u0026gt; \u0026lt;xUnit\u0026gt; \u0026lt;MaxParallelThreads\u0026gt;5\u0026lt;/MaxParallelThreads\u0026gt; \u0026lt;ParallelizeTestCollections\u0026gt;true\u0026lt;/ParallelizeTestCollections\u0026gt; \u0026lt;DiagnosticMessages\u0026gt;true\u0026lt;/DiagnosticMessages\u0026gt; \u0026lt;/xUnit\u0026gt; \u0026lt;LoggerRunSettings\u0026gt; \u0026lt;Loggers\u0026gt; \u0026lt;Logger friendlyName=\u0026#34;trx\u0026#34; enabled=\u0026#34;True\u0026#34;\u0026gt; \u0026lt;Configuration\u0026gt; \u0026lt;LogFileName\u0026gt;foo.trx\u0026lt;/LogFileName\u0026gt; \u0026lt;/Configuration\u0026gt; \u0026lt;/Logger\u0026gt; \u0026lt;Logger friendlyName=\u0026#34;blame\u0026#34; enabled=\u0026#34;True\u0026#34; /\u0026gt; \u0026lt;/Loggers\u0026gt; \u0026lt;/LoggerRunSettings\u0026gt; \u0026lt;/RunSettings\u0026gt; I settled on just having the two files, and this has worked for a few months now. I took an example trx file and fed it to a AI tool to help me generate a console tool to help me auto populate a CSV file that reads the file and sorts the results by project and by date. At some point, I want to remake this tool and post it to my GitHub. Check back and maybe I\u0026rsquo;ll have a link to it!\nSince implementing all of this, our leadership has loved seeing the numbers. The fact that on average, I spent around 50-250 hours running automation (I often run automation overnight when I work from home), and that my automation has saved us so much manual time has been a big plus. It\u0026rsquo;s also shown how much effort goes into my work every sprint. I\u0026rsquo;m hoping to keep improving this tool, I have so many idea. Mainly, I want to see if I can make a docker container that can make pretty charts using all that data. If you know of one that can read trx files, shoot me an email!\n","date":"17 May 2026","externalUrl":null,"permalink":"/blog/xunit-runsetting/","section":"Blog","summary":"","title":"xUnit and .runsettings: An Amazing Duo for Test Data","type":"blog"},{"content":"Welcome to my blog on various tech topics! They will primarily focus on topics I wish I could find sources on when I was first starting as a QA tester. While the topics may seem trivial, I want to help the next generations of testers understand how to test and not have the same research struggles that I had.\n","date":"7 May 2026","externalUrl":null,"permalink":"/blog/","section":"Blog","summary":"","title":"Blog","type":"blog"},{"content":"","date":"7 May 2026","externalUrl":null,"permalink":"/projects/","section":"Projects","summary":"","title":"Projects","type":"projects"},{"content":"My name is Chase Mieras, and I am an Automation Test Engineer Senior. I have been in the Quality Assurance field for over 5 years. I primarily work with .Net and Selenium with my automation framework. My hobbies include experimenting with various technologies, TTRPGs, and video games. I also enjoy tinkering with my homelab, and spending time with my wife and cats.\n","date":"7 May 2026","externalUrl":null,"permalink":"/","section":"Home","summary":"","title":"Home","type":"page"},{"content":"test\n","date":"7 May 2026","externalUrl":null,"permalink":"/resume/","section":"Home","summary":"","title":"Resume","type":"page"},{"content":"If you are in the Quality Assurance field, you may or may not have had a similar experience to entering the job force for testing. I was offered a position in QA after my last internship with the Federal Reserve Bank of Cleveland, and I had no idea what testing was. One of the first conversations I had with the recently hired QA Lead started with \u0026ldquo;Welcome to the wonderful world of QA!\u0026rdquo; Granted, this phrase did nothing to help me understand what I was getting into, but it did help me get more comfortable with my new role.\nThis phrase has stuck with me. It\u0026rsquo;s something that I say to students during outreach events and to any new hires that I have the pleasure of onboarding. It\u0026rsquo;s become my mantra, and that\u0026rsquo;s why I made it the first post on my site. So many students that I talk to have no clue what they want to do in the future, and even fewer know that testing is a job that you can pursue.\nOur goal as testers is to keep our products as thoroughly tested and bug-free as possible, but we also need to educate the next generation about what we actually do. Outreach is not only a great way to help educate those who know nothing about our field, but also a great way to build your resume and test your knowledge of quality assurance. So, the next time you are talking to a potential tester, welcome them to the wonderful world we work in and give them a tip or two on quality.\n","date":"23 May 2025","externalUrl":null,"permalink":"/blog/world-of-qa/","section":"Blog","summary":"","title":"Welcome to the Wonderful World of QA!","type":"blog"},{"content":"At the end of March, my parents gave me a laptop they had found. It was a Lenovo Ideapad 330S, and refused to turn on. They told me I could keep it regardless if I got it working or not. I happily took it and immediately knew what I was going to do to it: purge it of the evil Windows 10 OS it had and install Linux on it. My homelab and Steam Deck got me on a big Linux kick, and I really am getting tired of Windows.\nAs soon as I got it home and cleaned it up, I knew I had to do whatever I could to get it to work. Why, you may ask?\n(In reality, it's mainly because the the laptop was blue and in decent condition.) Once I was done cleaning it, I got it charging. I didn\u0026rsquo;t have a charger for it, but I used an adjustable power supply that luckily had the right plug for it. Once I got it charged, I figured out why my parents had given it to me; the Windows on it was fully corrupted. Whoever used it last did something to the system, and the system was not happy.\nI then tried to get Linux installed on the laptop. I have never done this before, so a brief Google search later I found Linux Mint. I got the ISO on a USB drive and gave flashing the system with the new OS a shot. It barely worked, but it did run. However, it couldn\u0026rsquo;t find the 1 terabyte drive and said the system was nearly at max capacity already. That\u0026rsquo;s when I discovered that the main SSD was super small, like only 8 gigabytes. The laptop would take ages to load and was barely usable.\nSo that put the project on hold for a bit. I wanted to get a bigger SSD for the primary driver, and I planned to get some RAM for it too since it had an open slot. One weekend and a Microcenter trip later, I had a 500 gigabyte SSD and 24 gigabytes of RAM. I installed the new parts, got Linux Mint on it, and have been using that laptop ever since.\nI\u0026rsquo;m still very happy with the outcome of this project. Granted, I sunk more money (and time) into it than I really should have, but now I have a good laptop to mess around with. Heck, it\u0026rsquo;s what I used to write this article and the whole site! It\u0026rsquo;s weird to me that I\u0026rsquo;d enjoy such a simple laptop, but I am too used to my gaming rig, Steam Deck, or the complexity that is my homelab. It\u0026rsquo;s just nice to have a laptop that\u0026rsquo;s easy to move around and just worked right away!\n","date":"6 April 2025","externalUrl":null,"permalink":"/projects/linux-laptop/","section":"Projects","summary":"","title":"Linux Mint Laptop","type":"projects"},{"content":"","externalUrl":null,"permalink":"/authors/","section":"Authors","summary":"","title":"Authors","type":"authors"},{"content":"","externalUrl":null,"permalink":"/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"},{"content":"","externalUrl":null,"permalink":"/series/","section":"Series","summary":"","title":"Series","type":"series"},{"content":"","externalUrl":null,"permalink":"/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"}]