{"id":24251173,"url":"https://github.com/klassijs/example-test-suite","last_synced_at":"2025-07-28T19:08:22.573Z","repository":{"id":218789340,"uuid":"722250040","full_name":"klassijs/example-test-suite","owner":"klassijs","description":null,"archived":false,"fork":false,"pushed_at":"2025-07-14T16:26:01.000Z","size":1386,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-14T21:12:37.490Z","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":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/klassijs.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,"zenodo":null}},"created_at":"2023-11-22T18:58:52.000Z","updated_at":"2025-03-14T19:00:25.000Z","dependencies_parsed_at":"2024-01-23T21:11:55.087Z","dependency_job_id":"50792ee7-cd32-4ffc-be97-f86011252b0e","html_url":"https://github.com/klassijs/example-test-suite","commit_stats":null,"previous_names":["klassijs/klassi-example-test-suite","klassijs/example-test-suite"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/klassijs/example-test-suite","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klassijs%2Fexample-test-suite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klassijs%2Fexample-test-suite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klassijs%2Fexample-test-suite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klassijs%2Fexample-test-suite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/klassijs","download_url":"https://codeload.github.com/klassijs/example-test-suite/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klassijs%2Fexample-test-suite/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267569622,"owners_count":24109114,"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","status":"online","status_checked_at":"2025-07-28T02:00:09.689Z","response_time":68,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":"2025-01-15T02:01:35.625Z","updated_at":"2025-07-28T19:08:22.543Z","avatar_url":"https://github.com/klassijs.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\u003cp align=\"center\"\u003e\n    \u003ch1 align=\"center\" font-size: 2.5em \u003e klassi-js \u003cbr\u003e\n    \u003ca href=\"https://github.com/klassijs/klassi-js/\"\u003e\n        \u003cimg alt=\"Klassi-Js\" src=\"https://github.com/klassijs/klassi-js/raw/main/runtime/img/klassiLogo.png\"\u003e\n    \u003c/a\u003e \u003c/h1\u003e \u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/klassijs/klassi-js/blob/main/LICENSE\"\u003e\n    \u003cimg alt=\"License\" src=\"https://img.shields.io/github/license/klassijs/klassi-js\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://webdriver.io/\"\u003e\n    \u003cimg alt=\"WebdriverIO\" src=\"https://img.shields.io/badge/tested%20with-webdriver.io-%23ea5906\"\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://webdriver.io/docs/api.html\"\u003e\n    \u003cimg alt=\"WebdriverIO\" src=\"https://img.shields.io/badge/webdriverio-docs-40b5a4\"\u003e\n    \u003c/a\u003e \u003cbr\u003e\n  klassi-Js is a debuggable BDD (Behavior-Driven Development) JavaScript test automation framework, Built on \u003ca href=\"http://webdriver.io/\"\u003e webdriver.io \u003ca/\u003e (Next-gen browser and mobile automation test framework for Node.js)\u003c/a\u003e and \u003ca href=\"https://github.com/cucumber/cucumber-js\"\u003e cucumber-js \u003c/a\u003e and distinguished by its integration of AI for advanced debugging functionalities. This incorporation of artificial intelligence elevates the framework's capabilities, providing a streamlined and efficient approach to test automation.\n\u003c/p\u003e\n \n\n## Usage\nAfter checking out the template go to the project root and run:\n```bash\nyarn install\nyarn run dev @search\n```\n\n## Options\n\n```bash\n--help                              output usage information\n--version                           output the version number\n--browser \u003cname\u003e                    name of browser to use (chrome, firefox). defaults to chrome\n--tags \u003c@tagName\u003e                   name of cucumber tags to run - Multiple TAGS usage\n--steps \u003cpath\u003e                      path to step definitions. defaults to ./step_definitions\n--featureFiles \u003cpath\u003e               path to feature definitions. defaults to ./features\n--pageObjects \u003cpath\u003e                path to page objects. defaults to ./page-objects\n--sharedObjects \u003cpaths\u003e             path to shared objects - repeatable. defaults to ./shared-objects\n--reports \u003cpath\u003e                    output path to save reports. defaults to ./reports\n--env \u003cpath\u003e                        name of environment to run the framework/test in. default to dev\n--reportName \u003coptional\u003e             name of what the report would be called i.e. 'Automated Test'\n```\n## Options Usage\n```bash\n  --tags @get || will execute the scenarios tagged with the values provided.\n  --featureFiles features/utam.feature,features/getMethod.feature || provide specific feature files containing the scenarios to be executed. If multiple are necessary, separate them with a comma (no blank space in between).\n```\n\n## Helpers\nKlassi-js contains a few helper methods to help along the way, these methods are:\n```js\n// Load a URL, returning only when the \u003cbody\u003e tag is present\nawait helpers.loadPage('https://duckduckgo.com');\n\n// writing content to a text file\nawait helpers.writeToTxtFile(filepath, output);\n\n// reading content froma text file\nawait helpers.readFromFile(filepath);\n\n// applying the current date to files\nawait helpers.currentDate();\n\n// get current date and time (dd-mm-yyyy-00:00:00)\nawait helpers.getCurrentDateTime();\n\n// clicks an element (or multiple if present) that is not visible, useful in situations where a menu needs a hover before a child link appears\nawait helpers.clickHiddenElement(selector, textToMatch);\n\n// This method is useful for dropdown boxes as some of them have default 'Please select' option on index 0\nawait helpers.getRandomIntegerExcludeFirst(range);\n```\n\n## Browser usage\nBy default, the test run using Google Chrome/devtools protocol, to run tests using another browser locally you'll need a local selenium server running, supply the browser name along with the `--browser` switch\n\n| Browser | Example |\n| :--- | :--- |\n| Chrome | `--browser chrome` |\n| Firefox | `--browser firefox` |\n\n\n## How to debug\n\nMost webdriverio methods return a [JavaScript Promise](https://spring.io/understanding/javascript-promises \"view JavaScript promise introduction\") that is resolved when the method completes. The easiest way to step in with a debugger is to add a ```.then``` method to the function and place a ```debugger``` statement within it, for example:\n\n```js\n  When(/^I search DuckDuckGo for \"([^\"]*)\"$/, function (searchQuery, done) {\n    elem = browser.$('#search_form_input_homepage').then(function(input) {\n      expect(input).to.exist;\n      debugger; // \u003c\u003c- your IDE should step in at this point, with the browser open\n      return input;\n    })\n       done(); // \u003c\u003c- let cucumber know you're done\n  });\n```\n\n## License\n\nLicenced under [MIT License](LICENSE) \u0026copy; 2016 [Larry Goddard](https://www.linkedin.com/in/larryg)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fklassijs%2Fexample-test-suite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fklassijs%2Fexample-test-suite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fklassijs%2Fexample-test-suite/lists"}