1"use strict";(self.webpackChunktestplane_docs=self.webpackChunktestplane_docs||[]).push([["3856"],{64086(e,t,n){n.r(t),n.d(t,{metadata:()=>i,default:()=>u,frontMatter:()=>r,contentTitle:()=>o,toc:()=>l,assets:()=>c});var i=JSON.parse('{"id":"quickstart/usage-in-ci","title":"Usage in CI","description":"Testplane can be integrated into any CI system. For GitHub Actions, we recommend using the official action gemini-testing/gh-actions-testplane, which automatically caches browsers and generates reports.","source":"@site/docs/quickstart/usage-in-ci.mdx","sourceDirName":"quickstart","slug":"/quickstart/usage-in-ci","permalink":"/docs/quickstart/usage-in-ci","draft":false,"unlisted":false,"editUrl":"https://github.com/gemini-testing/testplane-docs/tree/master/docs/quickstart/usage-in-ci.mdx","tags":[],"version":"current","sidebarPosition":4,"frontMatter":{"sidebar_position":4},"sidebar":"mainSidebar","previous":{"title":"Running and Debugging","permalink":"/docs/quickstart/running-tests"},"next":{"title":"Testplane Commands","permalink":"/docs/commands/overview"}}'),s=n(74848),a=n(28453);let r={sidebar_position:4},o="Usage in CI",c={},l=[{value:"GitHub Actions setup",id:"github-actions-setup",level:2},{value:"Additional capabilities",id:"additional-capabilities",level:2}];function d(e){let t={a:"a",code:"code",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",ul:"ul",...(0,a.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.header,{children:(0,s.jsx)(t.h1,{id:"usage-in-ci",children:"Usage in CI"})}),"\n",(0,s.jsxs)(t.p,{children:["Testplane can be integrated into any CI system. For GitHub Actions, we recommend using the official action ",(0,s.jsx)(t.a,{href:"https://github.com/gemini-testing/gh-actions-testplane",children:"gemini-testing/gh-actions-testplane"}),", which automatically caches browsers and generates reports."]}),"\n",(0,s.jsx)(t.h2,{id:"github-actions-setup",children:"GitHub Actions setup"}),"\n",(0,s.jsxs)(t.p,{children:["Create a ",(0,s.jsx)(t.code,{children:".github/workflows/testplane.yml"})," file in the root of your repository:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-yaml",metastring:'title=".github/workflows/testplane.yml"',children:'name: Testplane Tests\n\non:\n push:\n branches: [main, master]\n pull_request:\n branches: [main, master]\n\njobs:\n test:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v4\n\n - uses: actions/setup-node@v4\n with:\n node-version: "20"\n cache: "npm"\n\n - run: npm ci\n\n - uses: gemini-testing/gh-actions-testplane@v1\n with:\n browser: "chrome,firefox" # Optional: list of browsers\n'})}),"\n",(0,s.jsx)(t.h2,{id:"additional-capabilities",children:"Additional capabilities"}),"\n",(0,s.jsx)(t.p,{children:"The action supports additional parameters for configuration:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"config-path"})," \u2014 path to the configuration file (default ",(0,s.jsx)(t.code,{children:"testplane.config.ts"}),")"]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"set"})," \u2014 run specific test sets"]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"grep"})," \u2014 filter tests by pattern"]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"storybook"})," \u2014 integration with ",(0,s.jsx)(t.a,{href:"https://github.com/gemini-testing/testplane-storybook",children:"@testplane/storybook"})]}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:["For more details on parameters and advanced usage scenarios, see the ",(0,s.jsx)(t.a,{href:"/docs/guides/how-to-run-on-github",children:"GitHub Actions setup guide"}),", and for configuring Testplane for other CI systems, refer to the ",(0,s.jsx)(t.a,{href:"/docs/reference/config/main",children:"configuration documentation"}),"."]})]})}function u(e={}){let{wrapper:t}={...(0,a.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},28453(e,t,n){n.d(t,{R:()=>r,x:()=>o});var i=n(96540);let s={},a=i.createContext(s);function r(e){let t=i.useContext(a);return i.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),i.createElement(a.Provider,{value:t},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.