Privacy Policy

Last updated: 27 October 2026

This page explains which data is processed when you visit squally.dev or the documentation at docs.squally.dev and when you use the Squally app at app.squally.dev, who receives it and how long it is kept.

Squally is operated from Germany. Processing is governed by the General Data Protection Regulation (GDPR, in German: DSGVO); article references below refer to it.

1. Controller

Mohamed Abid
Gustav-Schulenburg-Str. 24
76189 Karlsruhe
Germany
support@squally.dev

No data protection officer has been appointed; the conditions requiring one are not met.

2. Summary

Test data and account data are stored in the EU, with the app and its database in Frankfurt, Germany. AI analysis is opt-in and, when you start it, sends excerpts of a test failure to Anthropic in the United States. Squally has no ads, no tracking and no analytics.

3. The website

3.1 Visiting the website (hosting)

The website and the documentation at docs.squally.dev are hosted by Vercel Inc., 440 N Barranca Ave #4133, Covina, CA 91723, USA. When a page is requested, Vercel processes technically necessary access data, in particular the IP address, the time of the request, the address requested, the amount of data transferred, and browser and device information.

3.2 Waiting list

Anyone joining the waiting list provides an email address. No other information is collected.

3.3 No cookies, no analytics

The website and the documentation set no cookies and embed no analytics, tracking or advertising services. There is no profiling and no automated decision-making.

The documentation keeps one entry in your browser's local storage, starlight-theme: the colour scheme it shows, light or dark. It never leaves your device.

4. The Squally app

The app at app.squally.dev collects and analyses the results of Playwright test runs for organizations that sign up for it. The sections below describe what it processes about the people who use it and about the tests it receives.

4.1 Account data

Sign-in runs on Squally's own infrastructure: account data and sessions are stored in the app's database in Frankfurt, Germany.

When you create an account or are invited to an organization, the app processes:

4.2 Sign in with Google

If you choose to sign in with Google, we receive your email address, your name and your Google account ID from Google and use them only to sign you in. They are not used for advertising, not shared and not sold. We do not store your Google profile picture.

4.3 Test data

When an organization connects its CI pipeline, the squally-reporter sends the results of its Playwright test runs: test names and file paths, statuses and durations, error messages, stacks and code snippets, page snapshots, the test output, CI details and git details (branch, commit, commit message and author name). For attempts that failed or were retried it also uploads screenshots, traces and the browser console. For an attempt that did not pass on its first try, Squally also receives the steps Playwright recorded – the titles of its actions, checks, hooks and fixtures, their durations and code locations. Typed values are removed before sending, and known secret patterns are masked. Steps are kept with the run's data and deleted with it. Secrets in common formats are masked in the text fields before they are stored; screenshots and traces are stored as they are.

The organization decides what its tests send: the content comes from its own test code, its configuration and its repository. The complete list of fields, the masking rules and how to send less are on What the reporter sends.

4.4 Emails

The app sends:

4.5 AI analysis

AI analysis is opt-in. It needs the Standard or Pro plan and a setting in the project that is off by default, and it runs only when someone clicks to analyse a failed attempt. Nothing is sent before that.

When an analysis is started, the following is sent to Anthropic in the United States, which writes the explanation: the test's name and file path, the browser, the branch, which attempt it is (first try or retry number), whether a later retry of the test passed in the run, a one-line summary of the test's other attempts in the run, the command to run the test locally, the error messages, the top lines of each stack, the code snippet and its location, an excerpt of the page snapshot, the attempt's duration, its timeout and whether it was hit, a derived error category, and the test's flaky rate and failure rate over its recent CI runs.

Not sent: the commit author, the commit message, the test output and browser console, screenshots, traces, the recorded steps, and any account data.

4.6 Error monitoring

The app records its own errors with Sentry, hosted in the EU (Germany). It records errors only: no performance tracing and no session tracking. It is configured not to send personal data by default. Before an error is sent, request bodies (which can contain test data), cookies and authorization headers are removed from it. Sentry does not store IP addresses.

4.7 Cookies

The app uses only cookies that are strictly necessary to provide it. No consent is required for these, and there are no tracking or advertising cookies.

The app also keeps a few settings in your browser's local storage, which never leave your device: the colour theme, whether the sidebar is collapsed, the title and notes you type on a run report, and, when you sign out, a message that tells the app's other open tabs that you signed out, so they return to the sign-in page (better-auth.message).

5. Sub-processors

The following service providers process data on our behalf.

Website

ProviderPurposeDataLocationTransfer basis
Vercel Inc.Website hosting (see 3.1)Access data, incl. IP addressesVercel's global edge networkEU-U.S. Data Privacy Framework
Formspree Inc.Waiting list form (see 3.2)The email address you enterUSAEU Standard Contractual Clauses (Art. 46(2)(c) GDPR)

Test data

For test data, these are sub-processors under the Data Processing Agreement (Annex 2).

ProviderPurposeDataLocationTransfer basis
Vercel Inc.App hostingAll requests to the app, incl. test data and IP addressesFunctions in Frankfurt, GermanyEU-U.S. Data Privacy Framework
Neon, LLC (a Databricks company)DatabaseTest results and the data in 4.3Frankfurt, GermanyEU-U.S. Data Privacy Framework (via Databricks)
Cloudflare, Inc. (R2)File storageScreenshots, traces, browser consolesEU jurisdictionEU-U.S. Data Privacy Framework
Functional Software, Inc. (Sentry)Error monitoringApplication errors, without request bodies, cookies or authorization headersGermanyEU-U.S. Data Privacy Framework
Anthropic, PBCAI analysis, only if enabledThe excerpts listed in 4.5USAEU Standard Contractual Clauses

Account, email, security

ProviderPurposeDataLocationTransfer basis
Vercel Inc.App hostingAccount data in transit, IP addressesFunctions in Frankfurt, GermanyEU-U.S. Data Privacy Framework
Neon, LLC (a Databricks company)DatabaseAccount data, sessions, the sign-in email logFrankfurt, GermanyEU-U.S. Data Privacy Framework (via Databricks)
Resend, Inc.Sending emailsRecipient address and the email's contentUSA (data storage); emails sent from the EU region (Ireland)EU Standard Contractual Clauses (Resend DPA) and EU-U.S. Data Privacy Framework
Cloudflare, Inc. (Turnstile)Bot checkIP address, browser informationCloudflare global networkEU-U.S. Data Privacy Framework
GoogleSign-in with Google, only if you choose itThe data in 4.2USAEU-U.S. Data Privacy Framework
Have I Been PwnedLeaked-password checkOnly the first 5 characters of a hash of the password — no personal dataGlobal (Cloudflare)Not applicable: no personal data

6. Integrations you enable

An organization can send its data to further services. These are destinations it configures, not our sub-processors:

7. Retention

Runs and their results are deleted after a period that depends on the organization's plan, at most 90 days. Screenshots, traces and browser consoles are deleted after 7 days for attempts that passed on their first try and after 21 days for failures and retried tests. An AI explanation is stored with the attempt it was written for and deleted together with its run, after the plan's retention period. The log of sign-in emails is deleted after 30 days. Details are on Retention.

You can delete your account yourself: open Account settings in the user menu and choose Delete account under Danger zone. An organization's owner can delete the organization under Settings → Organization → Danger zone. It is locked at once and deleted for good 30 days later, unless the owner restores it before then. You can also ask us to delete an organization by email to support@squally.dev.

8. Your rights as a data subject

Under the GDPR you have the following rights:

An informal email to support@squally.dev is enough for any of these.

You also have the right to lodge a complaint with a data protection supervisory authority (Art. 77 GDPR). The competent authority here is the Landesbeauftragter für den Datenschutz und die Informationsfreiheit Baden-Württemberg (State Commissioner for Data Protection and Freedom of Information), Lautenschlagerstraße 20, 70173 Stuttgart, Germany.

9. Changes

This policy will be updated whenever the processing changes — in particular when we add or change a service provider. The version published here, with the date given above, is the one that applies.