diff --git a/internal/driver/chrome/translate.go b/internal/driver/chrome/translate.go index 5883a44..d9f29fb 100644 --- a/internal/driver/chrome/translate.go +++ b/internal/driver/chrome/translate.go @@ -32,6 +32,8 @@ func TranslateStringSelector(selector string) (string, bool, error) { switch kind { case "id", "resource-id": return `[id="` + cssEscape(value) + `"]`, false, nil + case "idPrefix": + return `[id^="` + cssEscape(value) + `"]`, false, nil case "class": return `[class~="` + cssEscape(value) + `"]`, false, nil case "tag": diff --git a/internal/driver/chrome/translate_test.go b/internal/driver/chrome/translate_test.go index 79b6931..a7a4449 100644 --- a/internal/driver/chrome/translate_test.go +++ b/internal/driver/chrome/translate_test.go @@ -21,6 +21,9 @@ func TestTranslateStringSelector_KnownKeys(t *testing.T) { {"accessibilityLabel:logout", `[aria-label="logout"]`, false}, {"aria-label:Sign in", `[aria-label="Sign in"]`, false}, {"descPrefix:account:", `[aria-label^="account:"]`, false}, + // Must stay the string pkg/spec/src/web-runtime.ts builds for the same + // selector; the two translators feed the same page. + {"idPrefix:customer_row_", `[id^="customer_row_"]`, false}, {"testTag:submit", `:is([data-testid="submit"], [id="submit"])`, false}, {"testID:submit", `[data-testid="submit"]`, false}, {"placeholder:Email", `[placeholder="Email"]`, false},