ScreenshotNeo

BlogEngineering

Selenium News and Updates: A Smattering of Selenium 87

A Smattering of Selenium #87 was a June 14, 2012 link roundup. Here is what it covered and how to read it as an archive, not a current release update.

By the ScreenshotNeo team4 October 20266 min read

A Smattering of Selenium #87 was a community link roundup published on June 14, 2012, by Adam Goucher. It was not a Selenium release announcement or a single tutorial. Its subtitle was “Avoiding punching things about software packaging by doing the 4th!!!! smattering in row.” The issue collected ten links about browser automation, testing practices, app persistence, Android testing, and infrastructure. Read the original post on Selenium’s official blog.

1. What the roundup covered

The entries were short pointers to community writing and tools. The descriptions below reflect how the 2012 roundup presented them; they should not be read as claims about the projects’ current status.

Topic What #87 pointed to Why it may interest developers
Python decorators A post approaching decorators as a pattern to learn. Decorators can wrap behavior around functions, including reusable setup or reporting logic.
HTML5 persistence Lawnchair, described as both an outdoor couch and a persistence solution for HTML5 apps. The roundup noted that checking persistent applications in a browser is not enough. Browser tests may need to account for state that survives page reloads or sessions.
WebDriver and performance Soke, an Atlassian WebDriver performance tool, with Page Objects mentioned in the description. It connected browser automation patterns with performance testing.
Vendor-prefixed CSS A discussion of whether scripts should fail on vendor-prefixed CSS, alongside W3C’s “How to Unprefix -Webkit-Device-Pixel-Ratio.” It raised the question of whether tests should tolerate browser-specific CSS behavior or enforce a standards migration.
Android unit tests A link about Android unit tests, ending with a humorous LOLcat reference. The roundup’s scope extended beyond desktop browser automation.
Large-scale testing “Speedily practical large-scale tests.” It pointed readers toward practical ways to approach tests at scale.
Continuous deployment A piece presenting continuous deployment as a remedy for burnout. It connected delivery practices with the day-to-day experience of engineering teams.
Python repository structure Opinions on how to structure Python repositories. Repository organization was another community topic in the issue.
Cloud provisioning Skewer, described as a Puppet-based cloud-node provisioning tool, with Chef and CfEngine named as alternatives. It covered infrastructure setup alongside application testing.
Android app automation Calabash-Android, described as an evolving way to drive Android apps. It pointed to mobile app automation as a related testing area.

2. The Selenium connection: WebDriver used for performance work

The clearest Selenium-adjacent item was Soke. The roundup described it as an Atlassian WebDriver performance tool and mentioned Page Objects. That makes the entry a snapshot of how teams were exploring the reuse of browser automation concepts in performance work.

Functional browser tests and performance tests answer different questions. A functional test checks behavior, such as whether a flow completes. A performance test measures how a system behaves under a defined workload. The 2012 link is evidence that the roundup discussed this connection; it does not establish that Soke is maintained today, or that WebDriver alone is an appropriate load generator for a modern performance program.

3. How to use this old roundup today

  1. Start with the original date. The post appeared on June 14, 2012, so treat its links as historical leads.
  2. Separate the topics. The issue mixes browser testing, Android testing, persistence, deployment, Python organization, and infrastructure. Follow only the thread relevant to your current problem.
  3. Check present-day status independently. Project names and descriptions in the roundup are historical context, not current endorsements or maintenance claims.
  4. Use current documentation for implementation decisions. A link roundup is useful for discovering ideas, but it is not a substitute for the current docs of a language, browser, standard, or tool.

The official Selenium Smattering tag archive places #87 in a numbered sequence of roundup posts.

If you are researching a page mentioned in an archive, a screenshot can preserve the rendered state you saw. For a local browser-based workflow, open the target URL in your browser and capture the viewport with your browser’s screenshot command or developer tools. For repeatable captures, automate the browser workflow with your chosen browser automation setup and save the resulting image as an artifact. The exact command depends on the browser and automation library you use; this 2012 roundup does not prescribe one.

5. Or skip the browser setup

ScreenshotNeo is a website screenshot API and MCP server. Send one GET request with a URL to receive a PNG, JPEG, WebP, or PDF. See the ScreenshotNeo API documentation for the available options.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://www.selenium.dev/blog/2012/a-smattering-of-selenium-87/ -o shot.webp
import requests

r = requests.get(
    "https://api.screenshotneo.com/v1/shot",
    params={
        "access_key": "YOUR_API_KEY",
        "url": "https://www.selenium.dev/blog/2012/a-smattering-of-selenium-87/",
    },
    timeout=90,
)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({
  access_key: 'YOUR_API_KEY',
  url: 'https://www.selenium.dev/blog/2012/a-smattering-of-selenium-87/'
});
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot request failed: ${res.status}`);
const bytes = new Uint8Array(await res.arrayBuffer());
await import('node:fs/promises').then(fs => fs.writeFile('shot.webp', bytes));

ScreenshotNeo accepts cookie or consent banners like a visitor and removes more than 60 known consent platforms, newsletter popups, and chat widgets before capture; each step can be turned off. Bot checks and CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing, and response headers report the page verdict and billing status. Its 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 per month with no card; paid plans start at $5 for 3,000 shots. Every feature is available on every plan.

Create a free ScreenshotNeo account for 1,000 screenshots a month, with no card required.

6. Troubleshooting screenshot captures

Symptom Likely cause What to check
The capture is blank The page did not render successfully, or content depends on scripts or access. Open the URL normally, check access requirements, and inspect the response’s page verdict where available.
A banner or popup covers content The site presents consent, newsletter, or chat UI before the useful page content. For a browser workflow, handle the page state explicitly. ScreenshotNeo can accept and remove supported banners and widgets before capture.
The request times out The site is slow, unreachable, or waiting on resources. Check the URL and site availability, then allow sufficient time. ScreenshotNeo’s supplied Python example uses a 90-second client timeout.
The saved file is not a usable image The response may contain an error response rather than image bytes. Check the HTTP status and response headers before treating the body as an image.
The page differs between captures Dynamic content, animations, time-dependent data, or persistent browser state changed. Repeat under consistent conditions and consider whether the page state can be stabilized.

7. Performance, reliability, and cost considerations

  • Performance: A screenshot request requires page loading and rendering, so capture time depends on the target page and chosen wait conditions. For many URLs, bulk capture supports up to 100 URLs per call; asynchronous jobs with signed webhooks are available for work that should not hold an HTTP request open.
  • Reliability: Check HTTP status and ScreenshotNeo’s X-Page-Verdict and X-Billed headers. A successful transport response and a useful rendered page are separate things.
  • Cost: ScreenshotNeo bills only clean shots. Bot checks and CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed. Plans are Free: 1,000 per month; Starter: $5 for 3,000; Growth: $15 for 15,000; Pro: $39 for 60,000; Scale: $99 for 250,000; Business: $249 for 1,000,000. Yearly billing gives two months free.
  • Repeatability: ScreenshotNeo supports caching with a chosen TTL. Decide whether a capture should represent the latest page state or reuse a recent result.

8. FAQ

Was Selenium 87 a software release?

No. It was issue #87 in the Selenium Smattering roundup series, not a release announcement.

Who wrote the post?

Adam Goucher authored the roundup.

Does the roundup say the linked projects are still available?

No. Its descriptions are a record of what the post linked to in 2012, not verification of current availability or project status.

Where can I find neighboring issues?

Use the official Smattering archive to browse the numbered series.