[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M78GECE4JS3S47EPVXNKSW31":3,"skill-same:01M78GECE4JS3S47EPVXNKSW31":51},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":28,"commitSha":29,"skillDirectory":30,"forksCount":31,"repositoryHtmlUrl":32,"repositoryHomepageUrl":6,"ownerHtmlUrl":33,"ownerBlogUrl":34,"ownerDescription":35,"updatedAt":36,"install":37,"resources":50},"01M78GECE4JS3S47EPVXNKSW31","se-cross-browser-runner",null,"Sets up cross-browser Selenium execution across Chrome, Firefox, and Edge via TestNG parameters or a factory, plus a browser matrix. Use when an SDET says \"run my tests on Chrome and Firefox\", \"add cross-browser support\", \"parameterize the browser in testng.xml\", \"set up a browser matrix\", or wants multi-browser CI runs. Produces config and code the engineer must run per browser to confirm.","PramodDutta\u002Fskillmasterclass","PramodDutta","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1409610?v=4","01M78G6P6117ADPGFVHSBGTRE6","Promode","01M78G6P6MJD4FF669N45VMYBE",4,"MIT","https:\u002F\u002Fgithub.com\u002FPramodDutta\u002Fskillmasterclass\u002Fblob\u002Fmain\u002Fskillmasterclass\u002Fskills\u002Fframework-packs\u002Fselenium-pack\u002Fse-cross-browser-runner\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: se-cross-browser-runner\ndescription: >-\n  Sets up cross-browser Selenium execution across Chrome, Firefox, and Edge via\n  TestNG parameters or a factory, plus a browser matrix. Use when an SDET says \"run\n  my tests on Chrome and Firefox\", \"add cross-browser support\", \"parameterize the\n  browser in testng.xml\", \"set up a browser matrix\", or wants multi-browser CI runs.\n  Produces config and code the engineer must run per browser to confirm.\nlicense: MIT\nmetadata:\n  author: TheTestingAcademy\n  pack: selenium\n  version: 1.0.0\n---\n\n# Selenium Cross-Browser Runner\n\nYou **wire tests to run across multiple browsers** via TestNG parameters\u002Ffactory and\na browser matrix. The setup is a draft the engineer must actually run on each browser\n— you cannot confirm every browser is installed or behaves identically.\n\n## When to use\n- The same suite must execute on Chrome, Firefox, and\u002For Edge.\n- Someone wants the browser selectable from `testng.xml` or a system property.\n- A CI browser matrix (browser × maybe version\u002FOS) needs defining.\n\n## Workflow\n1. **Parameterize the browser**: a `@Parameters(\"browser\")` value from `testng.xml`,\n   or a `@Factory` that instantiates the test class once per browser.\n2. **Route to a driver factory** that maps the parameter to `ChromeDriver`\u002F\n   `FirefoxDriver`\u002F`EdgeDriver` with per-browser options (reuse `se-driver-manager`).\n3. **Define suite blocks** in `testng.xml` — one `\u003Ctest>` per browser, or a single\n   test parameterized and run under `parallel=\"tests\"` for concurrency.\n4. **Keep tests browser-agnostic**: no browser-specific locators or waits; differences\n   go in options only.\n5. **Add a matrix note** for CI (e.g. GitHub Actions strategy matrix) so the same suite\n   fans out across browsers.\n6. **Emit** `testng.xml` + factory glue and list browsers you could not verify installed.\n\n## Output shape\n```xml\n\u003C!-- testng.xml — one \u003Ctest> per browser, run in parallel -->\n\u003Csuite name=\"cross-browser\" parallel=\"tests\" thread-count=\"3\">\n  \u003Ctest name=\"chrome\">  \u003Cparameter name=\"browser\" value=\"chrome\"\u002F>  \u003Cclasses>\u003Cclass name=\"com.qa.tests.LoginTest\"\u002F>\u003C\u002Fclasses>\u003C\u002Ftest>\n  \u003Ctest name=\"firefox\"> \u003Cparameter name=\"browser\" value=\"firefox\"\u002F> \u003Cclasses>\u003Cclass name=\"com.qa.tests.LoginTest\"\u002F>\u003C\u002Fclasses>\u003C\u002Ftest>\n  \u003Ctest name=\"edge\">    \u003Cparameter name=\"browser\" value=\"edge\"\u002F>    \u003Cclasses>\u003Cclass name=\"com.qa.tests.LoginTest\"\u002F>\u003C\u002Fclasses>\u003C\u002Ftest>\n\u003C\u002Fsuite>\n```\n```java\npublic class BaseTest {\n    protected WebDriver driver;\n\n    @Parameters(\"browser\")\n    @BeforeMethod\n    public void setUp(@Optional(\"chrome\") String browser) {\n        driver = DriverFactory.create(browser);   \u002F\u002F maps param -> Chrome\u002FFirefox\u002FEdge (+ options)\n    }\n\n    @AfterMethod\n    public void tearDown() { if (driver != null) driver.quit(); }\n}\n```\n\n## Guardrails\n- This is a **draft the engineer must run on each browser** — passing on Chrome does not prove Firefox\u002FEdge pass.\n- **Never assume a locator exists**, and never write browser-specific locators; a matrix only works if tests are browser-agnostic.\n- Don't fabricate that a browser is installed; if you can't confirm Edge\u002FFirefox availability, say the engineer must verify.\n- Keep browser differences confined to driver options — not to test logic or waits.\n- Size `thread-count` to real machine capacity; over-parallelizing browsers causes flakiness.\n- Always `quit()` each browser session to avoid leaking processes across the matrix.\n","# Selenium Cross-Browser Runner\n\nYou **wire tests to run across multiple browsers** via TestNG parameters\u002Ffactory and\na browser matrix. The setup is a draft the engineer must actually run on each browser\n— you cannot confirm every browser is installed or behaves identically.\n\n## When to use\n- The same suite must execute on Chrome, Firefox, and\u002For Edge.\n- Someone wants the browser selectable from `testng.xml` or a system property.\n- A CI browser matrix (browser × maybe version\u002FOS) needs defining.\n\n## Workflow\n1. **Parameterize the browser**: a `@Parameters(\"browser\")` value from `testng.xml`,\n   or a `@Factory` that instantiates the test class once per browser.\n2. **Route to a driver factory** that maps the parameter to `ChromeDriver`\u002F\n   `FirefoxDriver`\u002F`EdgeDriver` with per-browser options (reuse `se-driver-manager`).\n3. **Define suite blocks** in `testng.xml` — one `\u003Ctest>` per browser, or a single\n   test parameterized and run under `parallel=\"tests\"` for concurrency.\n4. **Keep tests browser-agnostic**: no browser-specific locators or waits; differences\n   go in options only.\n5. **Add a matrix note** for CI (e.g. GitHub Actions strategy matrix) so the same suite\n   fans out across browsers.\n6. **Emit** `testng.xml` + factory glue and list browsers you could not verify installed.\n\n## Output shape\n```xml\n\u003C!-- testng.xml — one \u003Ctest> per browser, run in parallel -->\n\u003Csuite name=\"cross-browser\" parallel=\"tests\" thread-count=\"3\">\n  \u003Ctest name=\"chrome\">  \u003Cparameter name=\"browser\" value=\"chrome\"\u002F>  \u003Cclasses>\u003Cclass name=\"com.qa.tests.LoginTest\"\u002F>\u003C\u002Fclasses>\u003C\u002Ftest>\n  \u003Ctest name=\"firefox\"> \u003Cparameter name=\"browser\" value=\"firefox\"\u002F> \u003Cclasses>\u003Cclass name=\"com.qa.tests.LoginTest\"\u002F>\u003C\u002Fclasses>\u003C\u002Ftest>\n  \u003Ctest name=\"edge\">    \u003Cparameter name=\"browser\" value=\"edge\"\u002F>    \u003Cclasses>\u003Cclass name=\"com.qa.tests.LoginTest\"\u002F>\u003C\u002Fclasses>\u003C\u002Ftest>\n\u003C\u002Fsuite>\n```\n```java\npublic class BaseTest {\n    protected WebDriver driver;\n\n    @Parameters(\"browser\")\n    @BeforeMethod\n    public void setUp(@Optional(\"chrome\") String browser) {\n        driver = DriverFactory.create(browser);   \u002F\u002F maps param -> Chrome\u002FFirefox\u002FEdge (+ options)\n    }\n\n    @AfterMethod\n    public void tearDown() { if (driver != null) driver.quit(); }\n}\n```\n\n## Guardrails\n- This is a **draft the engineer must run on each browser** — passing on Chrome does not prove Firefox\u002FEdge pass.\n- **Never assume a locator exists**, and never write browser-specific locators; a matrix only works if tests are browser-agnostic.\n- Don't fabricate that a browser is installed; if you can't confirm Edge\u002FFirefox availability, say the engineer must verify.\n- Keep browser differences confined to driver options — not to test logic or waits.\n- Size `thread-count` to real machine capacity; over-parallelizing browsers causes flakiness.\n- Always `quit()` each browser session to avoid leaking processes across the matrix.\n",{"name":5,"license":15,"metadata":24,"description":7},{"pack":25,"author":26,"version":27},"selenium","TheTestingAcademy","1.0.0","main","d8c5108d5ae524b10a5a1c695cdee8cfc018be7b","skillmasterclass\u002Fskills\u002Fframework-packs\u002Fselenium-pack\u002Fse-cross-browser-runner",8,"https:\u002F\u002Fgithub.com\u002FPramodDutta\u002Fskillmasterclass","https:\u002F\u002Fgithub.com\u002FPramodDutta","https:\u002F\u002Fscrolltest.com","Blogger at http:\u002F\u002Fscrolltest.com , Youtuber - https:\u002F\u002Fwww.youtube.com\u002Fc\u002FItsTechMode ","2026-07-15 00:36:00",{"source":8,"skillName":5,"commands":38,"prompt":48,"zipAvailable":49},[39,42,45],{"tool":40,"command":41},"npx","npx skills add PramodDutta\u002Fskillmasterclass --skill se-cross-browser-runner",{"tool":43,"command":44},"bunx","bunx skills add PramodDutta\u002Fskillmasterclass --skill se-cross-browser-runner",{"tool":46,"command":47},"pnpm","pnpm dlx skills add PramodDutta\u002Fskillmasterclass --skill se-cross-browser-runner","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FPramodDutta\u002Fskillmasterclass\u002Fblob\u002Fmain\u002Fskillmasterclass\u002Fskills\u002Fframework-packs\u002Fselenium-pack\u002Fse-cross-browser-runner\u002FSKILL.md",true,[],[52,59,66,73,80,87],{"skillNo":53,"name":54,"nameZh":6,"description":55,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":56,"categories":57,"keywords":58,"publishedAt":19},"01M78GFBQAXS855299M20HQGYV","se-wait-fixer","Scans Selenium Java code for Thread.sleep and for implicit+explicit wait mixing, then replaces them with WebDriverWait\u002FExpectedConditions or FluentWait to fix synchronization. Use when an SDET says \"remove Thread.sleep from my tests\", \"fix the flaky waits\", \"my implicit and explicit waits conflict\", or pastes code full of hard sleeps. Produces refactors the engineer must run and confirm.","https:\u002F\u002Fgithub.com\u002FPramodDutta\u002Fskillmasterclass\u002Fblob\u002Fmain\u002Fskillmasterclass\u002Fskills\u002Fframework-packs\u002Fselenium-pack\u002Fse-wait-fixer\u002FSKILL.md",[],[],{"skillNo":60,"name":61,"nameZh":6,"description":62,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":63,"categories":64,"keywords":65,"publishedAt":19},"01M78GF8WPMW41VPA7RS4SHK80","se-test-generator","Generates a runnable Selenium 4 + TestNG test in Java from a plain-language scenario, using explicit waits and stable locators. Use when an SDET says \"write a Selenium test for login\", \"generate a TestNG test for the checkout flow\", \"automate this scenario in Selenium\", or pastes Gherkin\u002Fsteps and wants Java WebDriver code. Produces a draft test the engineer must review and run.","https:\u002F\u002Fgithub.com\u002FPramodDutta\u002Fskillmasterclass\u002Fblob\u002Fmain\u002Fskillmasterclass\u002Fskills\u002Fframework-packs\u002Fselenium-pack\u002Fse-test-generator\u002FSKILL.md",[],[],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":72,"publishedAt":19},"01M78GF5X9HP46NT4B3Q993EXP","se-report-integrator","Integrates reporting (Allure or ExtentReports) into a Selenium + TestNG suite with listeners, screenshot-on-failure, and step logging. Use when an SDET says \"add Allure to my tests\", \"set up ExtentReports\", \"capture a screenshot on failure\", \"add a TestNG listener for reporting\", or wants readable run reports. Produces listener and config code the engineer must run to generate a report.","https:\u002F\u002Fgithub.com\u002FPramodDutta\u002Fskillmasterclass\u002Fblob\u002Fmain\u002Fskillmasterclass\u002Fskills\u002Fframework-packs\u002Fselenium-pack\u002Fse-report-integrator\u002FSKILL.md",[],[],{"skillNo":74,"name":75,"nameZh":6,"description":76,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":19},"01M78GF31BMJCFXTF7CKY8TGV0","se-page-object-builder","Builds a Page Object Model class in Java (PageFactory @FindBy or explicit locators) with action methods and a WebDriverWait for a given page. Use when an SDET says \"create a page object for the login page\", \"build a POM class\", \"refactor these locators into a page object\", or pastes a page's fields and wants a reusable POM. Produces a draft class the engineer must review and run.","https:\u002F\u002Fgithub.com\u002FPramodDutta\u002Fskillmasterclass\u002Fblob\u002Fmain\u002Fskillmasterclass\u002Fskills\u002Fframework-packs\u002Fselenium-pack\u002Fse-page-object-builder\u002FSKILL.md",[],[],{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":19},"01M78GEYWZPDFSZPFZ2VYV7GRD","se-locator-strategist","Recommends and repairs Selenium locator strategy — replaces brittle absolute XPath with By.id, By.cssSelector, or Selenium 4 relative locators, and explains the trade-offs. Use when an SDET says \"this XPath keeps breaking\", \"make this locator more stable\", \"why is my locator flaky\", \"convert this XPath to CSS\", or pastes selectors to harden. Produces proposals the engineer must verify in the DOM.","https:\u002F\u002Fgithub.com\u002FPramodDutta\u002Fskillmasterclass\u002Fblob\u002Fmain\u002Fskillmasterclass\u002Fskills\u002Fframework-packs\u002Fselenium-pack\u002Fse-locator-strategist\u002FSKILL.md",[],[],{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":19},"01M78GEV918RERKZ0ZDY5RRF57","se-grid-configurator","Configures Selenium Grid 4 (hub-and-node or standalone, including Docker) and wires RemoteWebDriver for parallel and distributed runs. Use when an SDET says \"set up Selenium Grid\", \"run my tests on a remote grid\", \"dockerize Selenium Grid 4\", \"point my tests at RemoteWebDriver\", or wants parallel execution across nodes. Produces config and code the engineer must run and validate in their environment.","https:\u002F\u002Fgithub.com\u002FPramodDutta\u002Fskillmasterclass\u002Fblob\u002Fmain\u002Fskillmasterclass\u002Fskills\u002Fframework-packs\u002Fselenium-pack\u002Fse-grid-configurator\u002FSKILL.md",[],[]]