{"id":13483882,"url":"https://github.com/luckyframework/lucky_flow","last_synced_at":"2025-07-21T07:03:44.447Z","repository":{"id":32242558,"uuid":"129415665","full_name":"luckyframework/lucky_flow","owner":"luckyframework","description":"Automated browser tests for web applications. Similar to Ruby's Capybara.","archived":false,"fork":false,"pushed_at":"2025-06-16T03:38:25.000Z","size":75483,"stargazers_count":52,"open_issues_count":24,"forks_count":8,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-06-16T04:50:56.100Z","etag":null,"topics":["lucky-framework","testing-tools"],"latest_commit_sha":null,"homepage":"https://luckyframework.github.io/lucky_flow/","language":"Crystal","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/luckyframework.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2018-04-13T14:46:22.000Z","updated_at":"2025-06-16T03:36:32.000Z","dependencies_parsed_at":"2023-01-14T20:49:09.835Z","dependency_job_id":"0b7cba4c-fd30-457e-b38c-f8dcfa70a6d8","html_url":"https://github.com/luckyframework/lucky_flow","commit_stats":null,"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/luckyframework/lucky_flow","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luckyframework%2Flucky_flow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luckyframework%2Flucky_flow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luckyframework%2Flucky_flow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luckyframework%2Flucky_flow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/luckyframework","download_url":"https://codeload.github.com/luckyframework/lucky_flow/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luckyframework%2Flucky_flow/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266255244,"owners_count":23900098,"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":["lucky-framework","testing-tools"],"created_at":"2024-07-31T17:01:16.439Z","updated_at":"2025-07-21T07:03:44.426Z","avatar_url":"https://github.com/luckyframework.png","language":"Crystal","funding_links":[],"categories":["Testing"],"sub_categories":[],"readme":"# LuckyFlow\n\n[![API Documentation Website](https://img.shields.io/website?down_color=red\u0026down_message=Offline\u0026label=API%20Documentation\u0026up_message=Online\u0026url=https%3A%2F%2Fluckyframework.github.io%2Flucky_flow%2F)](https://luckyframework.github.io/lucky_flow)\n\nLuckyFlow is a library for testing user flows in the browser. It is similar to\nRuby's Capybara.\n\n![LuckyFlow example](https://user-images.githubusercontent.com/22394/40257158-1a2f30b8-5abb-11e8-90c2-94463638e65d.png)\n\n## Installation in [Lucky](https://luckyframework.org) projects\n\nLuckyFlow is already installed and configured. Check out the guides\nto see how to use it: https://luckyframework.org/guides/browser-tests/\n\n## Installation in other Crystal projects\n\nAdd this to your application's `shard.yml`:\n\n```yaml\ndevelopment_dependencies:\n  lucky_flow:\n    github: luckyframework/lucky_flow\n```\n\nConfigure LuckyFlow in `spec/spec_helper.cr`:\n\n```crystal\nrequire \"lucky_flow\"\n\nLuckyFlow.configure do |settings|\n  # This is required\n  settings.base_uri = \"http://localhost:\u003cport\u003e\"\n\n  # Optional settings. Defaults are shown here\n  settings.retry_delay = 10.milliseconds\n  settings.stop_retrying_after = 1.second\n  settings.screenshot_directory = \"./tmp/screenshots\"\n  settings.browser_binary = \"/Applications/Brave Browser.app/Contents/MacOS/Brave Browser\"\nend\n\n# Put this at the bottom of the file.\n# If a required setting is missing, this will catch it.\nHabitat.raise_if_missing_settings!\n```\n\nThen view the guides: https://luckyframework.org/guides/browser-tests/\n\nYou should be ready to go!\n\nFor use with some of the Lucky shards (including Lucky itself), you'll need\nto require a few extensions:\n\n```crystal\n# This extension adds an override to `visit` allowing you\n# to pass in a Lucky::Action.class or Lucky::RouteHelper\nrequire \"lucky_flow/ext/lucky\"\n\n# This extension adds a `fill_form` method that you can pass\n# an Operation or SaveOperation to which will populate form\n# fields for you\nrequire \"lucky_flow/ext/avram\"\n\n# Similar to the Lucky extension, this gives an additional override\n# to `visit` that allows you to visit a page as a specific User\nrequire \"lucky_flow/ext/authentic\"\n```\n\n## Usage\n\n\u003e Note that you can only pass string paths to `visit` since only Lucky has\n\u003e route helpers described in the guide below. Example: `visit \"/my-path\"`\n\nView guide at: https://luckyframework.org/guides/browser-tests/\n\n## Contributing\n\n1. Fork it ( https://github.com/luckyframework/lucky_flow/fork )\n1. Create your feature branch (git checkout -b my-new-feature)\n1. Install docker and docker-compose: https://docs.docker.com/compose/install/\n1. Run `script/setup`\n1. Make your changes\n1. Run `script/test` to run the specs, build shards, and check formatting\n1. Commit your changes (git commit -am 'Add some feature')\n1. Push to the branch (git push origin my-new-feature)\n1. Create a new Pull Request\n\n## Contributors\n\n- [paulcsmith](https://github.com/paulcsmith) Paul Smith - creator, maintainer\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluckyframework%2Flucky_flow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluckyframework%2Flucky_flow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluckyframework%2Flucky_flow/lists"}