{"id":15710771,"url":"https://github.com/roboportal/dakka","last_synced_at":"2025-04-05T15:06:19.469Z","repository":{"id":37103441,"uuid":"434156098","full_name":"roboportal/dakka","owner":"roboportal","description":"Dakka - generate automation  tests for Cypress, Playwright and Puppeteer","archived":false,"fork":false,"pushed_at":"2025-03-28T22:53:24.000Z","size":3207,"stargazers_count":119,"open_issues_count":9,"forks_count":5,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-29T14:07:46.388Z","etag":null,"topics":["automation","chrome-extension","chrome-extensions","cypress","cypress-io","devtools","e2e-framework","e2e-testing","e2e-tests","end-to-end-testing","javascript-tests","playwright","puppeteer","test-automation","test-generation","test-generator","test-recording","testing","testing-tools","testrecorder"],"latest_commit_sha":null,"homepage":"https://www.dakka.dev/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/roboportal.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":"2021-12-02T09:22:43.000Z","updated_at":"2025-01-16T06:51:55.000Z","dependencies_parsed_at":"2024-06-21T23:48:34.825Z","dependency_job_id":"376daeac-b9f3-4f79-9f30-cfbbaf937af3","html_url":"https://github.com/roboportal/dakka","commit_stats":{"total_commits":440,"total_committers":7,"mean_commits":"62.857142857142854","dds":0.6954545454545454,"last_synced_commit":"39a59dde80b2d840f1f6585b8df42fad6df624e5"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roboportal%2Fdakka","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roboportal%2Fdakka/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roboportal%2Fdakka/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/roboportal%2Fdakka/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/roboportal","download_url":"https://codeload.github.com/roboportal/dakka/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247353745,"owners_count":20925329,"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":["automation","chrome-extension","chrome-extensions","cypress","cypress-io","devtools","e2e-framework","e2e-testing","e2e-tests","end-to-end-testing","javascript-tests","playwright","puppeteer","test-automation","test-generation","test-generator","test-recording","testing","testing-tools","testrecorder"],"created_at":"2024-10-03T21:10:00.343Z","updated_at":"2025-04-05T15:06:19.447Z","avatar_url":"https://github.com/roboportal.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dakka\n\n[![Unit](https://github.com/roboportal/dakka/actions/workflows/unit.yml/badge.svg)](https://github.com/roboportal/dakka/actions/workflows/unit.yml)\n[![Integration](https://github.com/roboportal/dakka/actions/workflows/integration.yml/badge.svg)](https://github.com/roboportal/dakka/actions/workflows/integration.yml)\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg alt=\"Dakka logo\" src=\"https://user-images.githubusercontent.com/15819745/160267166-c1f78bee-67f4-44d2-8193-b999b4df61a4.svg\" width=\"180px\" height=\"60px\" /\u003e\n  \u003ch3\u003eGenerate tests for Cypress, Playwright and Puppeteer using Dakka\u003c/3\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://chrome.google.com/webstore/detail/dakka/gllikifiancbeplnkdnpnmmhhlncghej\" target=\"_blank\" rel=\"noreferrer\"\u003eDakka Chrome Extension\u003c/a\u003e |\n  \u003ca href=\"https://www.dakka.dev/\" target=\"_blank\" rel=\"noreferrer\"\u003eDocumentation\u003c/a\u003e\n\u003c/div\u003e\n\n## What's Dakka?\n\nDakka is an open source Chrome Extension which helps to generate end-to-end tests for Cypress, Playwright and Puppeteer.\n\n### Demo\n\nDemo website link: https://roboportal.io/\n\n![Demo](https://user-images.githubusercontent.com/7383804/155093359-37df3741-4010-4c26-a93a-4fdfa02ed336.gif)\n\n## Installing\n\nTo install Dakka click \u003ca href=\"https://chrome.google.com/webstore/detail/dakka/gllikifiancbeplnkdnpnmmhhlncghej\" target=\"_blank\" rel=\"noreferrer\"\u003eChrome extension\u003c/a\u003e and this will take you to Chrome Web Store. Follow next steps to start generating tests:\n\n1. Open Chrome devtools\n2. Enable Dakka\n3. Click Record button\n4. Start interacting with the page\n\n\u003cbr/\u003e\n\u003cdiv align=\"center\"\u003e\n\u003cimg width=\"760\" alt=\"Dakka demo\" src=\"https://user-images.githubusercontent.com/7383804/154786735-1fd140c2-3515-4978-a52e-3bb26e3e8c3a.png\"\u003e\n\u003c/div\u003e\n\n## User Actions\n\nOnce user starts recording, Dakka will catch:\n\n- Mouse clicks, double-clicks and right button clicks\n- Keyboard inputs including meta and special keys\n- File uploads\n- Browser navigation\n- Screen resize\n\nNot only Dakka tracks events for the page, but also for all its iframes (all origins supported!).\n\n## Adding Assertions\n\nAssertion Blocks are validation steps, which are converted to assertion logic such as \u003ccode\u003ecy.get('#loading').should('not.exist')\u003c/code\u003e.\nTo add an assertion hover over the floating plus sign and drag and drop assertion block.\n\n![Adding Assertions](https://user-images.githubusercontent.com/7383804/154787750-16716f68-40d1-4360-bc96-0152128a635a.gif)\n\nAfter adding Assertion Block you will need to configure assertion logic - locate the element on the page or manually add the element selector, choose the assertion from dropdown and edit the value if needed.\n\n\u003cbr/\u003e\n\u003cdiv align=\"center\"\u003e\n\u003cimg width=\"360\" alt=\"assertion setup 1\" src=\"https://user-images.githubusercontent.com/7383804/154793765-c04130a5-b061-415a-9abe-9f23a9e802a0.png\"\u003e\n\u003cimg width=\"450\" alt=\"assertion setup 2\" src=\"https://user-images.githubusercontent.com/7383804/154793730-57da26b3-9408-455a-a2c8-1a406f3a272d.png\"\u003e\n\u003c/div\u003e\n\n## Choosing Selectors\n\nDakka suggests the list of best possible selectors for the elements on the page.\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg width=\"560\" alt=\"Choosing Selectors\" src=\"https://user-images.githubusercontent.com/7383804/154788192-b5376c0d-c9f2-4a25-afc2-aad98939aa5c.png\"\u003e\n\u003c/div\u003e\n\n\u003cbr/\u003e\nSelectors are sorted by priority with green, red and yellow icons. First selector is pre-selected by default. Hover over the icon to get the element count on the page by selector.\n\u003cbr/\u003e\n\n## Delete Events\n\nIf generated events contain any entries that aren't required for the test use the Delete button located at the bottom of the event block.\n\n## Exporting\n\nGenerated test can be copied to clipboard or downloaded as a file and added to the project.\n\n![Exporting](https://user-images.githubusercontent.com/7383804/154789533-2ed4c538-7f9b-4cbb-86bf-6be11889b87b.gif)\n\nAlternatively, you can open the generated test in the extension's popup by clicking the action icon:\n\n![Test Preview](https://user-images.githubusercontent.com/15819745/171315495-1561eab7-8017-41f4-b227-4ae7e73ccb95.gif)\n\n## Test Case Creation\n\nDakka allows not only the single test recording and creation, but also the comprehensive test cases setup:\n\n![Test Case Creation](https://user-images.githubusercontent.com/15819745/171320546-5c51adcf-09df-4b6f-8539-52a6c5055b43.gif)\n\n\n## Contributing\n\n### Content\n\n- `projects/extension/src/background` - service-worker\n- `projects/extension/src/devTools` - creating tab for dev panel\n- `projects/extension/src/contentScript` - content and injectable scripts. Content has access to inspected DOM page, but is executed in different global context. Injectable is embedded to the document to intercept events.\n- `projects/extension/src/panel` - dev tool UI app\n- `projects/extension/src/manifest.json` - extension manifest\n- `projects/test/integration` - integration tests for projects\n- `projects/test/playground` - test playground with pre-configured tools\n\n### Development\n\nRun `npm i` and `npm start` to start development. It will run webpack dev server on the 8080 port. To get the test page run `npm run serve:integration` and use: `http://localhost:8081`\n\n### Testing\n\nRun `npm test` to execute the test suite. To update mocks of generated tests execute `UPDATE_OUT=true npm run test`\n\n### Build details\n\nThere are two webpack configs to bundle the extension:\n\n- `webpack.panel.config.js` - builds devTool and panel pages. This config supports HMR.\n- `webpack.scripts.config.js`- builds background, content and injection scripts. This part doesn't use HMR cause it leads to the behaviour when the panel app stops receiving chrome.runtime messages from content and background scripts.\n\nIt's noticed, that when multiple webpack processes work concurrently, it might cause a stale dev-server port after stopping the processes. To clean up such a process use `kill:stale-dev-server`.\n\n## Using remote devtools\n\nTo use React and Redux devtools, start the servers first: `npm run devtools`. In redux-devtools panel open `Settings` and select `use local` option in the `Connection` tab. The hostname should be `localhost`, and the port should be `8000`.\n\n### Building for production\n\nRun to create production build: `npm run build` and `npm run pack` to compress it as zip file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froboportal%2Fdakka","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Froboportal%2Fdakka","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froboportal%2Fdakka/lists"}