github.com/web-platform-tests/wpt.fyi@v0.0.0-20240530210107-70cf978996f1/webdriver/label_test.go (about) 1 // +build large 2 3 package webdriver 4 5 import ( 6 "fmt" 7 "testing" 8 9 mapset "github.com/deckarep/golang-set" 10 11 "github.com/stretchr/testify/assert" 12 "github.com/tebeka/selenium" 13 "github.com/web-platform-tests/wpt.fyi/shared" 14 ) 15 16 func TestLabelParam_Results(t *testing.T) { 17 runWebdriverTest(t, func(t *testing.T, app AppServer, wd selenium.WebDriver) { 18 aligned := false 19 testLabel(t, wd, app, "/", "experimental", "wpt-results", 4, aligned) 20 }) 21 22 } 23 24 func testLabel( 25 t *testing.T, 26 wd selenium.WebDriver, 27 app AppServer, 28 path, label, elementName string, 29 runs int, 30 aligned bool) { 31 // Navigate to the wpt.fyi homepage. 32 filters := shared.TestRunFilter{ 33 Labels: mapset.NewSetWith(label), 34 Aligned: &aligned, 35 } 36 url := fmt.Sprintf("%s?%s", path, filters.ToQuery().Encode()) 37 if err := wd.Get(app.GetWebappURL(url)); err != nil { 38 assert.FailNow(t, fmt.Sprintf("Failed to load %s: %s", url, err.Error())) 39 } 40 41 // Wait for the results view to load. 42 runsLoadedCondition := func(wd selenium.WebDriver) (bool, error) { 43 testRuns, err := getTestRunElements(wd, elementName) 44 if err != nil { 45 return false, err 46 } 47 return len(testRuns) > 0, nil 48 } 49 if err := wd.WaitWithTimeout(runsLoadedCondition, LongTimeout); err != nil { 50 assert.FailNow(t, fmt.Sprintf("Error waiting for test runs: %s", err.Error())) 51 } 52 53 // Check loaded test runs 54 testRuns, err := getTestRunElements(wd, elementName) 55 if err != nil { 56 assert.FailNow(t, fmt.Sprintf("Failed to get test runs: %s", err.Error())) 57 } 58 assert.Lenf(t, testRuns, runs, "Expected exactly %v TestRuns search result.", runs) 59 if aligned { 60 assertAligned(t, wd, testRuns) 61 } 62 } 63 64 func assertAligned(t *testing.T, wd selenium.WebDriver, testRuns []selenium.WebElement) { 65 if len(testRuns) < 2 { 66 return 67 } 68 args := []interface{}{testRuns[0]} 69 shaProp := "return arguments[0].testRun.revision" 70 sha, _ := wd.ExecuteScriptRaw(shaProp, args) 71 assert.NotEqual(t, sha, "") 72 for i := 1; i < len(testRuns); i++ { 73 args = []interface{}{testRuns[0]} 74 otherSHA, _ := wd.ExecuteScriptRaw(shaProp, args) 75 assert.Equal(t, sha, otherSHA) 76 } 77 }