In this video· click a step to jump to it
Test recording
Ranks — SEO autopilot app walkthrough
93,108 ms · 840,641 pixels changed
We built this regression test for ranks.so — it's yours to keep, free.
Take this test with you
This is a real Playwright test, recorded against ranks.so. Claim it into your own workspace and re-run it on every deploy — free.
export async function test(page, baseUrl, screenshotPath, stepLogger) {
const SITE = (baseUrl || 'https://ranks.so').replace(/\/$/, '');
let n = 0;
const shot = async (slug) => {
n += 1;
const p = String(screenshotPath).replace(/\.png$/i, '') + '-' + String(n).padStart(2, '0') + '-' + slug + '.png';
await page.screenshot({ path: p, fullPage: true });
stepLogger.log('frame ' + n + ' ' + slug + ' :: ' + page.url());
};
const settle = async (ms) => { await page.waitForTimeout(ms); };
// ---------- PUBLIC PHASE ----------Checks run
Notes from the demo run
AI-generatedWe signed into Ranks with the magic link, added lastest.cloud as a project, finished both setup wizards and came back to a dashboard that already had a real article draft and a real backlink submission waiting. For a 41-day-old product the loop is unusually complete: the moment a URL goes in, the autopilot has something to show. The whole surface is three routes, which is the right amount for what it promises.
- Your backlinks form fills itself inPasting lastest.cloud was enough for the setup form to arrive pre-filled with the product name, tagline, a 46-word short description, a 251-word long description, key features, the GitHub URL and the founded year. We only had to add a founder name, a country and a screenshot. That is the single most impressive thing in the product and nothing on the landing page mentions it.
- First article was ready before we finished looking aroundWithin about ten minutes of adding the project the Articles queue had 'Is That E2E Failure an App Bug or a Test Bug?' sitting at Ready, with a hero image, an intro, a table of contents and a Publish button. The Review modal is the best screen in the app.
- Domain rating resolved on its ownThe dashboard tile went from 'No rating in this period' to a real DR of 9 for lastest.cloud without us connecting anything. Good first-run signal while Search Console and analytics are still unconnected.
- The article status counts do not add upWith exactly one article the filter reads All (1), Published (0), Ready (1), Failed (1). The same row is being counted in two buckets, so Ready + Failed is already larger than All. One article that is simultaneously ready and failed reads as a broken pipeline even when nothing is wrong.
- Four dashboard cards say the same 'Connect' with no way inWebsite traffic, Traffic sources, Top pages and Top queries each render an identical Connect button, and the dialog behind the first three is the same 'Set up analytics' provider picker. On a fresh trial that is four identical dead ends above the fold before any data exists. One connect card at the top would carry the same message.
- /dashboard/plans checkout·Stopped at the plan comparison - never started a paid checkout
- Google Search Console / Analytics OAuth·Screenshotted the connect dialog instead of linking a real Google property
10 visual changes
Share this run
Proof your app is not AI slop
This test was built for ranks.so — claim it free
One click copies the test and baseline screenshots into your own Lastest workspace. Re-run on every deploy and catch regressions before your users do — free, no card required.





























