Friday, 17 July 2026

Testing for Coded Apps (automated E2E testing to get high quality)

Overview: Automation testing using AI generally ends with "test rot".  Kaizen Fix gets around test rot by switching the test source from the analysed system requirements to the code source as the logic to test.

Why: Gathering requirements in Agile software is continuously changing, so building tests based on the ask coupled with AI updating code realistically means the behaviour will change, DOM/Shaow DOM updating per build, and the full code base needs to be retested to ensure operational behaviour.

Hypothesis: Break the E2E testing into two distinct parts:
1) Does what the user asked for match what is delivered?  Ask AI to document the requirement from the code and compare it to the requirement the stakeholder signed off on. 
2) When code is updated, does this break any existing logic?  Regression tests to check existing logic work; if not, this requires a man in the loop to validate the change.

Proposed Solution
The four-step loop: 1. Code with AI → 2. Generate the code specification → 3. Tests generated by AI and MCP → 4. Test Baselines (run the dynamic Playwright test suites).  As the release occurs, the developer can automatically run the old tests and identify what is no longer working and why.  This can also be run during development.  I've been working on this different approach: an AI-assisted testing framework that treats the source code as the single source of truth — and turns it into a living, executable specification.

Key Point: reruns against the original/previous baseline catch genuine behaviour changes, not test rot. I deliberately left it unbranded so you can drop in KaizenFix (or keep it vendor-neutral) depending on where you're posting it.

How it works, in four steps:

1. Read the AI-generated code

AI (Claude or GitHub Copilot, working inside the IDE) analyses the application's source — components, routes, validation, business logic — and generates a full behavioural specification: what the system does today, fully documented, straight from the code.

2. Turn behaviour into programmed behaviour requirements

That specification becomes a structured requirements document. Not aspirational requirements — actual behaviour. If the app rounds a value, enforces a limit, or hides a button under a condition, it's captured.

3. Generate the regression suite

From the actual requirements into Playwright tests. AI generates detailed Playwright end-to-end tests — using platform-specific best practices for selectors and patterns, and environment configuration so the same suite runs against dev, UAT, or production. Each web app lives as its own isolated project with its own context and rules.

4. Lock in the baseline

At this point, the tests and the app agree by construction — the suite documents and validates the working behaviour. The tests part of the documentation.

The payoff comes when things change:

When the app or its logic evolves, rerun the original suite. Anything that breaks is a genuine, intentional-or-not change in behaviour — surfaced immediately, with the old expected values as evidence. Regenerate the spec, diff it against the last one, and you can see exactly what changed and whether you meant it. 

Thursday, 9 July 2026

Simple Explanation of LLM's, Coding Agents

      GitHub Copilot, Claude Code, and Cursor are not AI models!  They are Coding Agents/Assistants.

They are the developer experience layer that sits in your IDE and seamlessly accesses various Large Language Models (LLMs) such as Claud Opus/Fable/Sonnet/Haiku or GPT5.

The actual intelligence comes from the underlying Large Language Model (LLM) such as GPT-5, Claude Opus/Sonnet, Gemini, 

Naming breakdown:

  VS Code / Visual Studio /Claude Code (IDE)    

      ─────▼────

GitHub Copilot / Cursor Extension / Claude Code Extension        (Coding Agent)      

      ─────▼────

 GPT-5 / Claude Opus / Gemini (LLMs)

Local vs Premium LLMS: 

Cursor can reference online LLMs like Claude Opus and use Ollama to run Qwen3-Coder (my pref. for now), DeepSeek-Coder, Llama 3.x, Mistral.  Ollama lets me point to a local LLM and use it for free (saving on tokens; there are other advantages as well).

My Setup for local LLM usage:

VS Code                                   +
Cursor Extension                     +
Ollama                                     +
Local LLM (Qwen3-Coder)    = 🚀 AI-Powered Software Development

Azure Container Jobs with Docker containing E2E Playwright testing

Overview: I recently did a great project with Playwright to continuously test Canvas Apps.  This post outlines how I did it.

Reporting: Every test suite run and the tests inside are documented in SharePoint lists. p Below you can see for a project called feedback the tests that verify DTAP Canvas apps (Dev, Test, and Prod).

The Feedback app, in production, is showing the availability tests run recently
 

CI: I decided to use Azure Container Jobs to run the Playwright tests on a Docker image.


Jobs: The Docker image get params and starts the type of tests, the trigger uses cron timing.



Azure Container Job: Each time a job is called, a new instance is created. This means multiple jobs can run simultaneously, and on each job instance I get multiple COUs, so I spawn out 2-4 Playwright processes so the tests run faster.



Monday, 6 July 2026

Client-Side vs Server-Side Rendering Websites

Web applications generally fall into the CSR or SSR.

Feature Client-Side Rendering (CSR) Server-Side Rendering (SSR)
Rendering location Browser Server
Initial page load Slower Faster
SEO Worse Better
Server workload Lower Higher
Browser workload Higher Lower
Typical use Internal apps, dashboards Public websites, e-commerce
System Classification
  • Power Apps Canvas App
  • OutSystems (Low Code)
  • Mendix (Low Code)
  • React SPA
  • Flutter
  • Blazor WebAssembly
  • Angular
  • Vue
  • Power Pages
  • Next.js Website
  • ASP.NET MVC
  • PHP
  • E-commerce Product Page
  • Blazor Server
  • Ruby on Rails
  • Razor Pages

The table is worth understanding as it affects architectural decisions as the project progresses.



Sunday, 5 July 2026

Code Apps (Power Platform)

Code Apps (Power Platform) look to be gaining momentum. I think they will work for corporate app development as they offer governance and ALM as part of the Power Platform.   I saw this summary and thought it was a great overview.




Tuesday, 19 May 2026

AI infiltrates Development Segments so quickly

A decade ago, the companies that used Agile processes along these lines built the best software using CI/CD, and Automated Testing were the big winners. 


5 Years ago, low-code and platforms provided governance and faster ways to build apps.

We are seeing AI coming into all 6 steps, and low code is optional; it still offers good governance for businesses.


Test
Was: Unit Tests, Postman, Spec Flow, Selenium 
Becoming: Postman, MCP, Unit test generation

Deploy
Was: Scripts, PowerShell, TeamCity, Ansible, ARM, Portal UIs, TFS, Git, Terraform, Pulumi
Becoming: BICEP, MCP, VS Code/IDEs, GitHub, Claude CLI, GitHub Copilot

Code
Was: Java, C#, NodeJS, SDKs, RUST, GO APIs, Low-code/No-code
Becoming: Python, TypeScript, Power Platform, Agents

Saturday, 9 May 2026

Key Anthropic terminology for Ai (and Claude)

Overview: I have found that many people don't understand what Anthropic and Claude do, how they relate to each other, or how they fit into the AI industry.


The key takeaway is that Claude has two main parts: Tooling (e.g., Claude AI chat, Claude code, and Claude Cowork), and models for AI. The main product lines for these LLMs are Opus, Sonnet, and Haiku.