github.com/web-platform-tests/wpt.fyi@v0.0.0-20240530210107-70cf978996f1/webdriver/builder_test.go (about)

     1  // +build large
     2  
     3  // Copyright 2019 The WPT Dashboard Project. All rights reserved.
     4  // Use of this source code is governed by a BSD-style license that can be
     5  // found in the LICENSE file.
     6  
     7  package webdriver
     8  
     9  import (
    10  	"fmt"
    11  	"testing"
    12  
    13  	mapset "github.com/deckarep/golang-set"
    14  	"github.com/stretchr/testify/assert"
    15  	"github.com/tebeka/selenium"
    16  	"github.com/web-platform-tests/wpt.fyi/shared"
    17  )
    18  
    19  func TestQueryBuilder_MasterCheckedForMasterLabelQuery(t *testing.T) {
    20  	runWebdriverTest(t, func(t *testing.T, app AppServer, wd selenium.WebDriver) {
    21  		// Navigate to the wpt.fyi homepage.
    22  		filters := shared.TestRunFilter{
    23  			Labels: mapset.NewSetWith(shared.MasterLabel),
    24  		}
    25  		url := fmt.Sprintf("/results/?%s", filters.ToQuery().Encode())
    26  		var err error
    27  		if err = wd.Get(app.GetWebappURL(url)); err != nil {
    28  			assert.FailNow(t, fmt.Sprintf("Failed to load %s: %s", url, err.Error()))
    29  		}
    30  
    31  		// Wait for the results view to load.
    32  		var e selenium.WebElement
    33  		loaded := func(wd selenium.WebDriver) (bool, error) {
    34  			e, err = wd.FindElement(selenium.ByTagName, "wpt-app")
    35  			if err != nil {
    36  				return false, err
    37  			}
    38  			return e != nil, nil
    39  		}
    40  		if err := wd.WaitWithTimeout(loaded, LongTimeout); err != nil {
    41  			assert.FailNow(t, fmt.Sprintf("Error waiting for test runs: %s", err.Error()))
    42  		}
    43  
    44  		// Expand the builder
    45  		wd.ExecuteScript("arguments[0].editingQuery = true", []interface{}{e})
    46  		if err != nil {
    47  			assert.FailNow(t, fmt.Sprintf("Failed to expand builder: %s", err.Error()))
    48  		}
    49  		var cb selenium.WebElement
    50  		expanded := func(wd selenium.WebDriver) (bool, error) {
    51  			cb, err = FindShadowElement(wd, e, "test-runs-query-builder", "#master-checkbox")
    52  			if err != nil {
    53  				return false, err
    54  			}
    55  			return cb != nil, nil
    56  		}
    57  		if err := wd.WaitWithTimeout(expanded, LongTimeout); err != nil {
    58  			assert.FailNow(t, fmt.Sprintf("Error waiting for builder to expand: %s", err.Error()))
    59  		}
    60  		// NOTE: 'checked' is a property on the class, but not an attr in the HTML.
    61  		var checked interface{}
    62  		checked, err = wd.ExecuteScript("return arguments[0].checked", []interface{}{cb})
    63  		if err != nil {
    64  			assert.FailNow(t, fmt.Sprintf("Failed to get checkbox 'checked' attr: %s", err.Error()))
    65  		}
    66  		isChecked, _ := checked.(bool)
    67  		assert.True(t, isChecked)
    68  	})
    69  }