github.com/saucelabs/saucectl@v0.175.1/internal/cmd/ini/testcafe.go (about) 1 package ini 2 3 import ( 4 // imports embed to load .sauceignore 5 _ "embed" 6 "fmt" 7 "os" 8 9 "github.com/rs/zerolog/log" 10 cmds "github.com/saucelabs/saucectl/internal/cmd" 11 "github.com/saucelabs/saucectl/internal/config" 12 "github.com/saucelabs/saucectl/internal/segment" 13 "github.com/saucelabs/saucectl/internal/testcafe" 14 "github.com/saucelabs/saucectl/internal/usage" 15 "github.com/spf13/cobra" 16 "golang.org/x/text/cases" 17 "golang.org/x/text/language" 18 ) 19 20 func TestCafeCmd() *cobra.Command { 21 cfg := &initConfig{ 22 frameworkName: testcafe.Kind, 23 } 24 25 cmd := &cobra.Command{ 26 Use: "testcafe", 27 Short: "Bootstrap a TestCafe project.", 28 SilenceUsage: true, 29 Run: func(cmd *cobra.Command, args []string) { 30 tracker := segment.DefaultTracker 31 32 go func() { 33 tracker.Collect( 34 cases.Title(language.English).String(cmds.FullName(cmd)), 35 usage.Properties{}.SetFlags(cmd.Flags()), 36 ) 37 _ = tracker.Close() 38 }() 39 40 err := Run(cmd, cfg) 41 if err != nil { 42 log.Err(err).Msg("failed to execute init command") 43 os.Exit(1) 44 } 45 }, 46 } 47 48 cmd.Flags().StringVar(&cfg.frameworkVersion, "version", "", "TestCafe version.") 49 cmd.Flags().StringVar(&cfg.platformName, "platform", "", "OS name and version, such as 'Windows 11' or 'macOS 13'.") 50 cmd.Flags().StringVar(&cfg.browserName, "browser", "", "Browser name.") 51 cmd.Flags().StringVar(&cfg.artifactWhenStr, "artifacts-when", "fail", "When to download artifacts.") 52 53 return cmd 54 } 55 56 func configureTestcafe(cfg *initConfig) interface{} { 57 return testcafe.Project{ 58 TypeDef: config.TypeDef{ 59 APIVersion: testcafe.APIVersion, 60 Kind: testcafe.Kind, 61 }, 62 Sauce: config.SauceConfig{ 63 Region: cfg.region, 64 Sauceignore: ".sauceignore", 65 Concurrency: cfg.concurrency, 66 }, 67 RootDir: ".", 68 Testcafe: testcafe.Testcafe{ 69 Version: cfg.frameworkVersion, 70 }, 71 Suites: []testcafe.Suite{ 72 { 73 Name: fmt.Sprintf("testcafe - %s - %s", cfg.platformName, cfg.browserName), 74 PlatformName: cfg.platformName, 75 BrowserName: cfg.browserName, 76 }, 77 }, 78 Artifacts: config.Artifacts{ 79 Download: config.ArtifactDownload{ 80 When: cfg.artifactWhen, 81 Directory: "./artifacts", 82 Match: []string{"*"}, 83 }, 84 }, 85 } 86 } 87 88 //go:embed sauceignore/testcafe.sauceignore 89 var sauceignoreTestcafe string