ScreenshotNeo

BlogHow-to

How to Test a Joomla Website: A Practical Guide

Test Joomla updates and extensions safely with a staging copy, a verified backup, and checks for the frontend, administrator, and site-specific workflows.

By the ScreenshotNeo team4 October 202611 min read

To test a Joomla website safely, make a separate copy of the site, verify that its files and database can be restored, check compatibility with the target Joomla and server versions, and apply the planned change to the copy first. Then inspect both the public frontend and administrator backend and exercise the features affected by the change. Repeat the successful procedure on production only after taking a fresh backup.

“Testing” can mean a trial upgrade, checking whether an extension or template is compatible, or reviewing a site after a code, configuration, hosting, or content change. The checks should match the change. Joomla’s upgrade guides recommend trying the upgrade locally or on a subdomain, tracking any extra steps, and checking the frontend and backend afterward. See the Joomla 4-to-5 trial-run guide for that specific migration path; its version requirements and steps do not apply universally to every Joomla version.

1. Decide what the test needs to prove

Write down the change and the failures it could cause. A core update might affect extensions or templates; a PHP or database change might affect the site’s runtime; a template change might affect navigation and responsive layouts. An extension change might affect the pages, forms, or administrator screens that use it.

Use this short test plan:

  • Change: What will be updated or modified?
  • Environment: Which Joomla, PHP, database, and web-server versions are involved?
  • Dependencies: Which third-party extensions, templates, integrations, or custom code could be affected?
  • Acceptance checks: Which pages and workflows must still work?
  • Recovery: Where is the backup, and has its restore been checked?

There is no single checklist that proves every Joomla site works. A small brochure site and a site with member access, forms, ecommerce, or custom integrations have different critical workflows. Test the features your site actually uses.

2. Choose a local or staging environment

Test on a local copy or a separate staging site, often on a subdomain. Joomla’s upgrade guidance recommends either a local trial or a subdomain trial. Choose the environment that best reproduces production while keeping the test site isolated from live visitors and data.

Option Useful when Check before relying on it
Local copy You want to test without exposing a public test URL, or need a repeatable development environment. Match production’s Joomla, PHP, database, and relevant server configuration as closely as practical. Local-only success may miss hosting-specific behavior.
Subdomain or staging site You need to test on hosting closer to production or let authorized reviewers check the result. Restrict access, prevent search indexing, and keep test actions from affecting live services or people.

Whichever you choose, use a copy of the site and keep notes on the steps needed to reproduce the successful change. Treat production data in the copy carefully: testing can trigger email, payment, webhook, or other integrations if those services remain live. Use safe test configurations where available.

3. Inventory versions and check compatibility

Before changing anything, record the current Joomla version and the intended target version. Check the target version’s current server requirements against the actual PHP and database versions in the test environment. Do not reuse requirements from an older migration guide as if they were universal.

Make an inventory of installed third-party extensions and templates. For each one:

  1. Check the developer’s compatibility notes for the exact target Joomla version.
  2. Check whether a required extension update or migration step exists.
  3. Test the extension and the workflows that depend on it in the copied site.
  4. Note extensions that are unused, unsupported, or have no confirmed compatible release.

A compatibility label or pre-update indicator is useful evidence, but it is not proof that an extension works in your site. Joomla’s migration guidance warns that pre-update information may be incomplete when extension developers have not supplied accurate compatibility data. See the Joomla migration basics and the target version’s official migration guide. Avoid adding or updating extensions from sources you do not trust; Joomla’s extension setup security guidance recommends backing up before installing extensions and using trusted sources.

4. Back up the files and database, then verify recovery

A Joomla backup needs both the site files and the database. A copy of only one may not be enough to restore the working site. Keep a backup somewhere separate from the live site, and test the restore in a safe environment before relying on it.

  1. Create a backup of the production site’s files and database before making the test copy.
  2. Keep an off-site or otherwise separate copy of the backup.
  3. Restore the backup into the local or staging environment using the process appropriate to your hosting and backup tooling.
  4. Open the restored frontend and administrator area. Confirm that the database connection and site configuration work.
  5. Record where the backup is stored and how to restore it.

Joomla’s security guidance emphasizes an off-site backup and recovery process that is tested before it is needed. See Joomla’s backup and recovery guidance and backup basics for a Joomla website. A successful backup job is not the same as a proven restore.

5. Apply the planned change to the test copy

Follow the official instructions for the exact source and target versions or the extension you are changing. Do not treat one version-specific upgrade recipe as a universal Joomla procedure. If the test is for an extension, change only what your test plan calls for and note the version and settings used.

During the change, record:

  • Warnings, errors, or failed update steps.
  • Extensions or templates that needed updates, disabling, or configuration changes.
  • Manual steps and any change to PHP, database, or server configuration.
  • Unexpected differences from production, such as missing integrations or unavailable services.

If you cannot reproduce production closely, write down the difference. A test result is only as useful as the environment and workflows it covers.

6. Check the frontend, administrator, and important workflows

After an upgrade, Joomla’s guide explicitly directs administrators to test the frontend and backend. Start there, then cover the site-specific workflows that could have been affected.

Frontend checks

  • Load the home page and representative pages using the changed template or extension.
  • Follow the main menus and links; check for missing pages, broken layout, or unexpected redirects.
  • Try the site’s important forms, search, login, or other visitor actions where applicable.
  • Check pages that depend on third-party extensions or integrations.
  • Review the result on the viewport sizes and devices that matter to your visitors.

Administrator checks

  • Sign in to the administrator area and open the screens involved in the change.
  • Confirm that affected extensions and templates appear enabled and configured as expected.
  • Try the relevant content-editing or administrative workflow, including saving a test change if safe.
  • Look for errors, warnings, or missing controls related to the change.

Use test data and safe integration credentials where possible. Do not submit real payments or send messages to real customers as part of a routine staging check. The precise functional checks depend on what the site does; this is a tailored checklist, not an official universal Joomla test suite.

7. Fix failures before production

If a test fails, narrow down whether the cause is the Joomla version, server configuration, extension, template, or a site-specific setting. Use the relevant Joomla or extension documentation and the error details available in the test environment. Joomla’s version upgrade guide describes using debug information and disabling a failing extension as troubleshooting options. Make one controlled change at a time, then repeat the affected check.

Do not promote a test that has unexplained errors or a workflow that you have not checked. If the issue cannot be resolved, restore the test copy or revise the change plan and investigate before attempting production.

8. Repeat the verified procedure on production

Once the test succeeds, schedule the production change and take a fresh backup immediately beforehand. Follow the documented procedure for the exact Joomla source and target versions. Apply the recorded steps, then check the production frontend and administrator area and the critical workflows again.

Production can differ from staging in data, traffic, configuration, or connected services. Keep the recovery path available until the change has been checked. Joomla does not support downgrading after some upgrades; for an upgrade problem, the Joomla programmers’ backward compatibility policy advises restoring a backup made immediately before the upgrade.

Testing site appearance with screenshots

Browser screenshots can help compare representative pages before and after a change, especially when checking a template or layout update. A screenshot is a visual check, not proof that forms, authentication, database writes, or extension logic work. Capture the same URLs and viewport sizes on both copies, and investigate differences rather than assuming every difference is a defect.

To capture manually, open the staging page in a browser, set the viewport you want to review, and use the browser’s screenshot or print-to-PDF feature. Check long pages at full length and inspect pages with dynamic or lazy-loaded content after it has appeared. Keep a record of the URL, viewport, and test version so later comparisons are meaningful.

Or skip the browser setup

ScreenshotNeo is a website screenshot API and MCP server from Yorker Media. One GET request can return a PNG, JPEG, WebP, or PDF. For a staging page you are authorized to capture, the cURL call is:

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://staging.example.com -o shot.webp

See the ScreenshotNeo API documentation for options and response details. Equivalent minimal examples:

import requests

r = requests.get(
    "https://api.screenshotneo.com/v1/shot",
    params={"access_key": "YOUR_API_KEY", "url": "https://staging.example.com"},
    timeout=90,
)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({
  access_key: 'YOUR_API_KEY',
  url: 'https://staging.example.com'
});
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot request failed: ${res.status}`);
await Bun.write('shot.webp', res);

Replace the example staging URL with the page you need to review. The Python example uses the requests package; the Node.js example uses fetch and Bun’s file writer. Keep the API key private and avoid capturing pages containing sensitive data unless your use is appropriate.

  • Cookie and consent banners are accepted like a visitor, and 60+ known consent platforms, newsletter popups, and chat widgets can be removed before the shot; each step can be turned off.
  • Bot checks, blank pages, timeouts, failed loads, and cache hits cost nothing; response headers report the page verdict and billing status.
  • An MCP server provides take_screenshot, get_page_info, and capture_pdf tools for Claude, Cursor, and other MCP clients.
  • The free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000. All features are on every plan.

Sign up for 1,000 free screenshots a month, with no card required.

Troubleshooting

Symptom Likely cause What to check or do
Staging shows a database connection error The copied configuration still points to production, or the staging database credentials or database are missing. Check the staging configuration and database credentials. Confirm the restored database is available before opening the site.
Frontend or administrator is blank or shows a server error after the change A PHP error, incompatible extension or template, or server requirement mismatch may be involved. Check the error details and target-version requirements. Use the version-specific official guide; isolate the affected extension in the test copy and repeat the check.
Pre-update compatibility looks good, but a feature breaks Compatibility data may be incomplete, or the site’s configuration exposes an issue not represented by the indicator. Check the extension developer’s notes and test the affected workflow directly in the copied site.
Some pages or images appear missing in a screenshot The page may load content dynamically or lazily, or the screenshot may be taken before the content appears. Wait for the page to settle, inspect the page in a browser, and use a full-page capture with lazy images loaded where appropriate.
Staging changes affect live visitors or send real messages The test copy may still be connected to production services or publicly accessible. Restrict access and configure safe test integrations before testing. Review outbound email, payment, and webhook settings.
A restore does not produce a working site Files or database may be missing, mismatched, or restored with incorrect configuration. Verify that both components came from a consistent backup, correct the test environment configuration, and repeat the restore check before depending on it.
A ScreenshotNeo screenshot request fails The URL may be inaccessible to the capture service, the key may be invalid, or the page may time out or fail to load. Check the URL and API key, inspect the response and its verdict/billing headers, and consult the API documentation. A failed load is not billed under the stated service behavior.

Performance, reliability, and cost considerations

  • Keep the test focused: Begin with the highest-risk change and the workflows it touches. A test plan based on the site’s real dependencies is more useful than an unbounded list of generic checks.
  • Match production where it matters: Joomla, PHP, database, extensions, template, and relevant configuration differences can change results. Record differences that cannot be reproduced.
  • Make recovery practical: A backup helps only if it includes files and database and the restore process works. Keep it separate and verify it before a risky production change.
  • Reduce unintended effects: Isolate staging and check connected services before testing actions that could affect visitors, customers, or production data.
  • Budget for screenshots: Manual browser checks have no API charge. ScreenshotNeo offers 1,000 shots per month free with no card; listed paid plans are Starter $5 for 3,000, Growth $15 for 15,000, Pro $39 for 60,000, Scale $99 for 250,000, and Business $249 for 1,000,000. Yearly billing gives two months free. Only clean shots are billed, and cache hits cost nothing.

FAQ

Can I test a Joomla update on the live site?

For a potentially risky update, first test on a separate local or staging copy. Then back up production and follow the correct version-specific instructions.

Does a successful screenshot mean the Joomla site works?

No. A screenshot shows rendered appearance at a moment in time. It does not verify administrator access, form submission, database writes, or extension behavior.

Do I need to test every extension?

Inventory all installed extensions, then prioritize those that are active or relevant to the change. Confirm compatibility information and exercise the workflows that depend on them.

Can I use one Joomla upgrade guide for every version?

No. Requirements and migration steps depend on the source and target versions. Use the official guide for that exact path.

What is the minimum useful post-change check?

Open the frontend and administrator area, then test the site-specific features affected by the change. A verified restore path should be in place before a risky production update.