AWS Nova Act Agentic AI AgentCore Browser Automation

Testing My Personal Website with Amazon Nova Act

No Selenium. No XPath. No CSS selectors. Just natural language — and an AI agent that browses your site like a real human. Here's exactly how I built it, what broke, and what Nova Act can actually do beyond a simple smoke test.

VR
Vishnu Rachapudi
Cloud & AI Engineer · AWS Community Builder (Security)
April 2026
12 min read
4
Acts executed
33.6s
Total run time
100%
Pass rate
0
Lines of XPath

I've been building with Agentic AI on AWS for a while — Bedrock Agents, Strands, AgentCore. When Amazon released Nova Act, I wanted to try something personal: could I use it to automatically test my own website? Turns out yes — and it's far more interesting than any test automation I've written before.

In this post
  1. What is Nova Act — how it differs from Selenium
  2. Where Nova Act shines — real use cases
  3. JSON task files — scaling without writing code
  4. Setting up and writing the test
  5. Results — all 4 acts succeeded in 33.6s
  6. What's next — Part 2 with AgentCore Browser
Section 01

What is Nova Act?

Nova Act is Amazon's AI model built to take actions inside a web browser. Unlike Selenium, Playwright, or Cypress — which rely on DOM selectors — Nova Act understands pages visually and semantically. You describe what you want in plain English, and it figures out how to do it.

Traditional: driver.find_element(By.XPATH, '//a[@class="blog-link"]').click()

Nova Act: nova.act("Find a blog link and click it")

Traditional Automation
XPath / CSS selectors
Breaks when UI changes
Verbose boilerplate code
No reasoning — just commands
Blind to visual context
Nova Act
Natural language steps
Resilient to UI changes
Minimal Python code
Shows agent reasoning per step
Visual + semantic understanding

How it works — architecture

📝
Python script
Natural language instructions via nova.act()
Nova Act SDK + @workflow decorator
Registers runs in AWS, manages session lifecycle, logs every step
🌎
Browser (Chromium)
Local in Part 1 — managed cloud session via AgentCore Browser in Part 2
🔍
vishnurachapudi.com
Homepage loaded, heading verified, blog navigation tested
Section 02

Where Nova Act actually shines

Before jumping into code, it's worth understanding what Nova Act is built for. This isn't just a QA tool — it's a production-grade agentic framework for any workflow that involves a browser and doesn't have an API.

🧪
QA & Smoke Testing
End-to-end validation that survives UI changes. No selector maintenance needed.
📋
Form Filling
Complex multi-step forms across portals — healthcare, insurance, procurement.
🛒
Checkout Automation
Complete purchase flows — product selection, cart, payment, confirmation.
🔍
Data Extraction
Structured scraping from any site using natural language. No custom parsers.
💰
Price Intelligence
Parallel price discovery across multiple retailers with AI-powered matching.
🤖
Legacy Integration
Automate web portals with no API. Bridges the gap where integrations fail.
Section 03

JSON task files — scale without writing code

One of the most powerful patterns from the official AWS QA sample repo is using JSON files as test cases. Instead of Python for every test, you define steps in a simple JSON schema and Nova Act executes them. Non-developers can write tests. AI tools like Kiro or Amazon Q CLI can generate the JSON automatically by analyzing your codebase.

Here's a JSON task file based on the exact 4 acts I ran against vishnurachapudi.com:

📄 vishnurachapudi_smoke_test.json
{
  "testId": "VR-SMOKE-01",
  "testName": "Vishnu Site Smoke Test",
  "description": "Verify homepage loads, name is visible, blog navigation works",
  "startingUrl": "https://www.vishnurachapudi.com",
  "testSteps": [
    {
      "stepId": "step-01",
      "action": "Wait for page to load and confirm homepage is visible",
      "expectedResult": "Homepage loads successfully and content is visible"
    },
    {
      "stepId": "step-02",
      "action": "Find my name or title heading on the page",
      "expectedResult": "Vishnu Rachapudi heading and 14x AWS Certified title are visible"
    },
    {
      "stepId": "step-03",
      "action": "Find a blog or project link and click it",
      "expectedResult": "Page navigates to the blog section successfully"
    },
    {
      "stepId": "step-04",
      "action": "Confirm content is visible on this new page",
      "expectedResult": "Blog posts with headings and dates are visible"
    }
  ]
}

The Python runner that loads and executes these JSON files:

import json
from nova_act import NovaAct, workflow

@workflow(workflow_definition_name="json-driven-tests", model_id="nova-act-latest")
def run_test_from_json(test_file: str):
    with open(test_file) as f:
        test = json.load(f)

    print(f"Running: {test['testName']}")

    with NovaAct(
        starting_page=test["startingUrl"],
        ignore_https_errors=True
    ) as nova:
        for step in test["testSteps"]:
            prompt = step["action"] + ". Expected: " + step["expectedResult"]
            result = nova.act(prompt)
            print(f"✓ {step['stepId']}: {result}")

# Run it
run_test_from_json("vishnurachapudi_smoke_test.json")

Combined with pytest-xdist, each JSON test file runs in its own isolated session in parallel. A 15-test suite that would take 15 minutes sequentially finishes in under 2 minutes. The official aws-samples QA repo has the full framework including HTML report generation.

Section 04

Setting up and writing the test

Step 1 — Install Nova Act

Requires Python 3.10+ on macOS Sierra+, Ubuntu 22.04+, Windows 10+, or WSL2.

pip install nova-act
pip install nova-act
$ pip install nova-act

Step 2 — Configure AWS credentials

aws configure
aws configure
$ aws configure — setting up credentials for Nova Act AWS Service

Step 3 — Get your Nova Act API key

Go to nova.amazon.com/act → Dev Tools → Get API Keys. This key authenticates the SDK with the Nova Act AWS service.

Nova Act Dev Tools
nova.amazon.com/act → Dev Tools — API key generation + workflow monitoring

The test script

Four natural language acts — each validating a different part of vishnurachapudi.com. No XPath. No element IDs.

from nova_act import NovaAct, workflow

@workflow(workflow_definition_name="my-demo-workflow", model_id="nova-act-latest")
def my_workflow(prompt):
    with NovaAct(
        starting_page="https://www.vishnurachapudi.com",
        ignore_https_errors=True
    ) as nova:

        # Act 1: Does the homepage load?
        result1 = nova.act("Wait for page to load and confirm homepage is visible")
        print("✓ Homepage:", result1)

        # Act 2: Is my name/title present?
        result2 = nova.act("Find my name or title heading on the page")
        print("✓ Content:", result2)

        # Act 3: Can we navigate to the blog?
        result3 = nova.act("Find a blog or project link and click it")
        print("✓ Navigation:", result3)

        # Act 4: Is blog content visible?
        result4 = nova.act("Confirm content is visible on this new page")
        print("✓ Page check:", result4)

if __name__ == "__main__":
    my_workflow("test vishnurachapudi.com")
test_my_site.py open in editor
test_my_site.py — complete test script in terminal editor
python3 test_my_site.py
$ python3 test_my_site.py — workflow run created on Nova Act AWS Service

The error I hit — SSL pre-check

Nova Act runs an SSL certificate pre-check before opening the browser. If the domain can't be resolved or the cert can't be verified, it fails immediately with InvalidCertificate — before any browser even opens. Adding ignore_https_errors=True bypassed this and the run succeeded.

Section 05

Results — all 4 acts succeeded

Workflow run created
Workflow run 019d78c1 created with model nova-act-latest — session started
Live browser opening site
A real Chromium browser opened vishnurachapudi.com — live window visible
Session start log
Session log — Act 1 executing, agent thinking printed to terminal in real time

Act 1 — homepage confirmed

Act 1 step view
Act 1 step view — homepage screenshot captured. Agent: "The page is already loaded and visible."

All 4 acts — every one succeeded

All 4 acts succeeded
Nova Act console — Acts 1–4 all Succeeded with timestamps and act IDs

Act 4 — blog content visible

Act 4 blog page
Act 4 navigated to vishnurachapudi.com/#blog — "From the Blog" section confirmed visible
ActResult detail
ActResult — session_id, act_id, steps, timing per act
SUCCEEDED status
Workflow status: SUCCEEDED — 33.6s across 4 act calls
Act 1 — Homepage load confirmed
Agent: "I can see the page is already loaded and the homepage is visible." · 5.5s
Act 2 — Name and title found
Found "Vishnu Rachapudi" + "Golden Jacket" + "14x AWS Certified" · 6.2s
Act 3 — Blog link clicked
Navigated to https://www.vishnurachapudi.com/#blog · 15.3s
Act 4 — Blog content visible
Agent: "Yes, content is visible on this page." · 6.6s

Key takeaways

Nova Act doesn't need XPath or CSS selectors. Visual and semantic understanding means UI changes don't break your tests. This is the biggest practical difference from Selenium.

The agent shows its reasoning. Every act has an "Agent thinking" trace — you see exactly why it passed or failed. Far easier to debug than a Selenium stack trace.

JSON task files democratize testing. Non-developers write tests in plain JSON. AI tools like Kiro auto-generate them from your codebase.

33.6s for a 4-step smoke test. Each act takes 5–7s as the model thinks and acts. For a deploy-time smoke test this is very reasonable — especially when you can parallelize.

Part 2

What's next — AgentCore Browser

Part 1 runs the browser locally. Part 2 moves everything to the cloud using Amazon Bedrock AgentCore Browser — a fully managed, cloud-hosted browser session in AWS. Your Python code stays identical; you just swap in a WebSocket endpoint. Sessions record to S3, you get live view in the console, and you can run tests in parallel at scale.

Coming in Part 2 — AgentCore Browser + full CI/CD
AgentCore Browser — fully managed cloud browser sessions in AWS
Parallel JSON-driven tests with pytest-xdist
GitHub Actions trigger on every push to main
Slack alert when any test fails
Session replay from S3 for post-run debugging