Skip to main content
Glama
appium_installer_test.go4.38 kB
package device_connect import ( "os" "testing" ) func TestGetAppiumConfig(t *testing.T) { tests := []struct { name string envVars map[string]string wantInstall bool wantDrivers []string wantPlugins []string }{ { name: "default configuration", envVars: map[string]string{}, wantInstall: true, wantDrivers: []string{"uiautomator2"}, wantPlugins: []string{"inspector"}, }, { name: "disable installation", envVars: map[string]string{ "GBOX_INSTALL_APPIUM": "false", }, wantInstall: false, wantDrivers: []string{"uiautomator2"}, wantPlugins: []string{"inspector"}, }, { name: "custom drivers", envVars: map[string]string{ "GBOX_APPIUM_DRIVERS": "uiautomator2,xcuitest", }, wantInstall: true, wantDrivers: []string{"uiautomator2", "xcuitest"}, wantPlugins: []string{"inspector"}, }, { name: "no drivers", envVars: map[string]string{ "GBOX_APPIUM_DRIVERS": "none", }, wantInstall: true, wantDrivers: []string{}, wantPlugins: []string{"inspector"}, }, { name: "with custom plugins", envVars: map[string]string{ "GBOX_APPIUM_PLUGINS": "images,execute-driver", }, wantInstall: true, wantDrivers: []string{"uiautomator2"}, wantPlugins: []string{"images", "execute-driver"}, }, { name: "no plugins with none", envVars: map[string]string{ "GBOX_APPIUM_PLUGINS": "none", }, wantInstall: true, wantDrivers: []string{"uiautomator2"}, wantPlugins: []string{}, }, { name: "no plugins with NONE uppercase", envVars: map[string]string{ "GBOX_APPIUM_PLUGINS": "NONE", }, wantInstall: true, wantDrivers: []string{"uiautomator2"}, wantPlugins: []string{}, }, { name: "empty string for plugins keeps default", envVars: map[string]string{ "GBOX_APPIUM_PLUGINS": "", }, wantInstall: true, wantDrivers: []string{"uiautomator2"}, wantPlugins: []string{"inspector"}, // Empty string = use default }, { name: "empty string for drivers keeps default", envVars: map[string]string{ "GBOX_APPIUM_DRIVERS": "", }, wantInstall: true, wantDrivers: []string{"uiautomator2"}, // Empty string = use default wantPlugins: []string{"inspector"}, }, { name: "full custom configuration", envVars: map[string]string{ "GBOX_INSTALL_APPIUM": "true", "GBOX_APPIUM_DRIVERS": "uiautomator2,xcuitest,espresso", "GBOX_APPIUM_PLUGINS": "images", }, wantInstall: true, wantDrivers: []string{"uiautomator2", "xcuitest", "espresso"}, wantPlugins: []string{"images"}, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { // Clear environment variables os.Unsetenv("GBOX_INSTALL_APPIUM") os.Unsetenv("GBOX_APPIUM_DRIVERS") os.Unsetenv("GBOX_APPIUM_PLUGINS") // Set test environment variables for key, value := range tt.envVars { os.Setenv(key, value) } // Get configuration cfg := GetAppiumConfig() // Check installation flag if cfg.InstallAppium != tt.wantInstall { t.Errorf("InstallAppium = %v, want %v", cfg.InstallAppium, tt.wantInstall) } // Check drivers if len(cfg.Drivers) != len(tt.wantDrivers) { t.Errorf("Drivers length = %d, want %d", len(cfg.Drivers), len(tt.wantDrivers)) } for i, driver := range cfg.Drivers { if i < len(tt.wantDrivers) && driver != tt.wantDrivers[i] { t.Errorf("Drivers[%d] = %s, want %s", i, driver, tt.wantDrivers[i]) } } // Check plugins if len(cfg.Plugins) != len(tt.wantPlugins) { t.Errorf("Plugins length = %d, want %d", len(cfg.Plugins), len(tt.wantPlugins)) } for i, plugin := range cfg.Plugins { if i < len(tt.wantPlugins) && plugin != tt.wantPlugins[i] { t.Errorf("Plugins[%d] = %s, want %s", i, plugin, tt.wantPlugins[i]) } } // Cleanup for key := range tt.envVars { os.Unsetenv(key) } }) } } func TestCheckNodeInstalled(t *testing.T) { // This test will only pass if Node.js and npm are actually installed // In a CI environment without Node.js, this test should be skipped if os.Getenv("CI") == "true" && os.Getenv("SKIP_NODE_TEST") == "true" { t.Skip("Skipping Node.js test in CI environment") } err := CheckNodeInstalled() if err != nil { t.Logf("Node.js check failed (expected in environments without Node.js): %v", err) } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/babelcloud/gru-sandbox'

If you have feedback or need assistance with the MCP directory API, please join our Discord server