@@ -415,6 +415,47 @@ func TestFormsUseSlackTheme(t *testing.T) {
415415 })
416416}
417417
418+ func TestFormsNoColor (t * testing.T ) {
419+ t .Run ("forms use plain theme with no-color" , func (t * testing.T ) {
420+ fsMock := slackdeps .NewFsMock ()
421+ osMock := slackdeps .NewOsMock ()
422+ osMock .AddDefaultMocks ()
423+ cfg := config .NewConfig (fsMock , osMock )
424+ cfg .NoColor = true
425+ io := NewIOStreams (cfg , fsMock , osMock )
426+
427+ var selected string
428+ f := buildSelectForm (io , "Pick" , []string {"A" , "B" }, SelectPromptConfig {}, & selected )
429+ f .Update (f .Init ())
430+
431+ view := f .View ()
432+ // Title and option lines should have no ANSI codes
433+ for _ , line := range strings .Split (view , "\n " )[:3 ] {
434+ assert .Equal (t , ansi .Strip (line ), line , "content line should have no ANSI codes" )
435+ }
436+ })
437+
438+ t .Run ("no-color takes priority over lipgloss experiment" , func (t * testing.T ) {
439+ fsMock := slackdeps .NewFsMock ()
440+ osMock := slackdeps .NewOsMock ()
441+ osMock .AddDefaultMocks ()
442+ cfg := config .NewConfig (fsMock , osMock )
443+ cfg .NoColor = true
444+ cfg .ExperimentsFlag = []string {"lipgloss" }
445+ cfg .LoadExperiments (context .Background (), func (_ context.Context , _ string , _ ... any ) {})
446+ io := NewIOStreams (cfg , fsMock , osMock )
447+
448+ var selected string
449+ f := buildSelectForm (io , "Pick" , []string {"A" , "B" }, SelectPromptConfig {}, & selected )
450+ f .Update (f .Init ())
451+
452+ view := f .View ()
453+ for _ , line := range strings .Split (view , "\n " )[:3 ] {
454+ assert .Equal (t , ansi .Strip (line ), line , "content line should have no ANSI codes even with lipgloss experiment on" )
455+ }
456+ })
457+ }
458+
418459func TestFormsUseSurveyTheme (t * testing.T ) {
419460 t .Run ("multi-select uses survey prefix without lipgloss" , func (t * testing.T ) {
420461 var selected []string
0 commit comments