Files
teleport/e2e/runner/cmd/gen-ts-fixtures/main.go
T
Ryan ClarkandMaja Cieślak 6266cd9eba Auto detect fixture usage in E2E tests, supporting changes for running enterprise e2e tests (#65141)
* Auto detect fixture usage in tests

* Changes to runner for enabling e e2e tests

* Only detect fixtures in test/UI/debug modes

* Make scanning more resilient - require test.use, allow for multiple lines

* Fix e2e/runner CI generate check

* Make scanning context aware to match with running individual tests

* Log enabled fixtures on one line

* Rename gen-fixtures, move go gen to main.go

* Return an error if no tests are matched

* gen-ts-fixtures: Use text/template instead of manually writing to buf

* Ignore generated fixtures.ts instead of formatting it

* Fix pnpm lockfile patching for when e/e2e is missing

* Simplify test running mode detection for scanning fixtures

* go generate

* Remove codegen from test run logic

* Handle run.sh receiving e/e2e directly

* Allow for fixtures to be enabled manually through flags

* Fix logging of enabled fixtures to include the ones set by flags

* Handle inline comments

* Update cmd in generated file

* Only pnpm install if teleport/connect needs building

* Error if UI mode is invoked with connect tests

* Handle errors better when checking if a binary exists

* Add info to the README about manually enabling fixtures

* Debug -> Warn

* Add test files to --ui

* Handle comments in strings properly

* Remove connect TSH from pnpm install logic

* Ignore flags in run.sh

* Handle double quotes just in case

* Add line number back

* Handle commented out imports

* Always include host.docker.internal in the certs

* Only scan fixtures in test mode/when test files are specified

* Make e2e/run.sh work with absolute paths to e/ tests

* Scan fixtures when running tests but not in UI mode

---------

Co-authored-by: Maja Cieślak <[email protected]>
2026-04-03 12:57:18 +00:00

84 lines
2.5 KiB
Go

/**
* Teleport
* Copyright (C) 2026 Gravitational, Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package main
import (
"bytes"
"fmt"
"os"
"path/filepath"
"text/template"
"github.com/gravitational/teleport/e2e/runner/fixtures"
)
var tmpl = template.Must(template.New("fixtures.ts").Parse(`/**
* Teleport
* Copyright (C) 2026 Gravitational, Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// Code generated by e2e/runner/cmd/gen-ts-fixtures; DO NOT EDIT.
import { test as base } from '@playwright/test';
type Fixture =
{{- range .Fixtures}}
| '{{.Name}}'
{{- end}};
export const test = base.extend<{ fixtures: Fixture[] }>({
fixtures: [[], { option: true }],
});
`))
func main() {
all := fixtures.All()
if len(all) == 0 {
fmt.Fprintln(os.Stderr, "no fixtures registered")
os.Exit(1)
}
var buf bytes.Buffer
if err := tmpl.Execute(&buf, struct{ Fixtures []*fixtures.Fixture }{all}); err != nil {
fmt.Fprintf(os.Stderr, "executing template: %v\n", err)
os.Exit(1)
}
outPath := filepath.Join("..", "helpers", "fixtures.ts")
if err := os.WriteFile(outPath, buf.Bytes(), 0644); err != nil {
fmt.Fprintf(os.Stderr, "writing %s: %v\n", outPath, err)
os.Exit(1)
}
fmt.Printf("generated %s with %d fixture(s)\n", outPath, len(all))
}