{"id":18105394,"url":"https://github.com/bjesus/abie","last_synced_at":"2025-04-13T19:33:36.277Z","repository":{"id":66686605,"uuid":"399536650","full_name":"bjesus/abie","owner":"bjesus","description":"Framework agnostic, developers-first, A/B Testing platform","archived":false,"fork":false,"pushed_at":"2021-08-28T14:21:10.000Z","size":4,"stargazers_count":12,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-06T08:06:06.496Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bjesus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-08-24T16:36:44.000Z","updated_at":"2024-01-30T22:16:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"b45a3f8e-e972-40be-9bce-2deadbf56d22","html_url":"https://github.com/bjesus/abie","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bjesus%2Fabie","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bjesus%2Fabie/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bjesus%2Fabie/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bjesus%2Fabie/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bjesus","download_url":"https://codeload.github.com/bjesus/abie/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248768223,"owners_count":21158602,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-31T22:18:37.227Z","updated_at":"2025-04-13T19:33:36.247Z","avatar_url":"https://github.com/bjesus.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Abie ⚖️\n\nAbie is a framework agnostic, developers-first, A/B Testing platform. It lets the developer define an A/B test using simple HTML attributes. It uses Cloudflare Workers to compile the final HTML on the edge, thus causing no flickering or content flashes, and it manages the persistence of the test groups automatically.\n\n## Example\n\n```html\n\u003cp data-abie-gte=\"90\"\u003e\n  This paragraph will only show to 10% of the users, between 90 to 100.\n\u003c/p\u003e\n\n\u003cp data-abie-gte=\"85\" data-abie-lte=\"95\"\u003e\n  This paragraph will only show to 10% of the users, between 85 to 95, so half\n  of them will also see the paragraph above.\n\u003c/p\u003e\n\n\u003c!-- Abie will automatically put the visitor identifer (a number between 0 to 100) here,\n     so you can report it to whatever endpoint you need --\u003e\n\u003cscript\u003e\n  console.log(\"%ABIE_IDENTIFIER%\");\n\u003c/script\u003e\n```\n\nCheck out [test.html](test.html) for more examples, and to see how to define groups and use them around the code. See the example site running [here](https://abie.bjesus.workers.dev/test.html).\n\n## Features\n\n- Define the test target using a 0-100 scale means you can choose the size of a test and create overlapping tests\n- Abie handles setting a cookie to persist the test on future visits\n- Define test groups so you don't have to repeat the test definition\n- Inject the visitor identifier to your JS code so you can report it to whatever Analytics tools you want\n- Clean the Abie HTML attributes, so the final HTML has no traces of an AB test even running\n\n## How to run\n\n### Locally\n\n1. Run an HTTP server, like `npx http-server`\n1. Emulate the worker, like `npx miniflare -u http://localhost:8080 worker.js`\n1. Navigate with your browser to http://localhost:8787/test.html\n1. Modify the `abie-id` cookie to get a different variant of the page\n\n### Online\n\nCreate a Cloudflare Worker using [worker.js](worker.js) and tunnel your website through it, or replace `fetch(req)` with `fetch('https://YOUR-SITE.COM'+new URL(req.url).pathname);` if your site isn't hosted on Cloudflare.\n\n## Why the name\n\nIn tribute to [Abie Nathan](https://en.wikipedia.org/wiki/Abie_Nathan) ☮\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbjesus%2Fabie","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbjesus%2Fabie","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbjesus%2Fabie/lists"}