SeleniumHQ / selenium

A browser automation framework and ecosystem.
https://selenium.dev
Apache License 2.0
30.26k stars 8.15k forks source link

[🐛 Bug]: Text transformation issue with `text-transform: capitalize;` using Selenium WebDriver with Firefox 127.0.2 #14271

Open Usielrivas opened 2 months ago

Usielrivas commented 2 months ago

What happened?

Description: There is an issue with the text-transform: capitalize; CSS property when using Selenium WebDriver with Firefox 127.0.2. The text transformation does not handle accented characters correctly, resulting in incorrect capitalization.

Steps to Reproduce:

  1. Install Node.js.
  2. Create a new project and install Selenium WebDriver.
    npm init -y
    npm install selenium-webdriver // last version
  3. Download geckodriver 0.34 and place it in a specific directory.
  4. Create the following JavaScript script (selenium_example.js):
const { Builder, By, until } = require('selenium-webdriver');
const firefox = require('selenium-webdriver/firefox');
const path = require('path');

const geckodriverPath = path.join(process.env.HOME, 'gecko/geckodriver');  // Adjust this path

(async function example() {
    let options = new firefox.Options();
    options.setBinary(geckodriverPath);

    let driver = new Builder()
        .forBrowser('firefox')
        .setFirefoxOptions(options)
        .build();

    try {
        const url = 'file:///home/user/test/bug/index.html';

        await driver.get(url);

        await driver.wait(until.elementLocated(By.tagName('h1')), 10000);

        let element = await driver.findElement(By.tagName('h1'));

        let text = await element.getText();

        console.log(`response: ${text}`);
    } finally {
        await driver.quit();
    }
})();
  1. Create the following HTML file (index.html):
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Bug Test</title>
    <style>
        h1 {
            text-transform: capitalize;
        }
    </style>
</head>
<body>
    <h1>Fecha de expiración</h1>
</body>
</html>
  1. Run the script:
    node selenium_example.js

Expected Behavior: The output should be:

response: Fecha De Expiración

Actual Behavior: The output is:

response: Fecha De ExpiraciÓN

Additional Information:

This issue started occurring after updating to Firefox 127.0.2. It appears that the text-transform: capitalize; CSS property does not handle accented characters correctly.

Console Output: No errors in the console.


How can we reproduce the issue?

already described

Relevant log output

already described

Operating System

Fedora 40

Selenium version

4.22.0

What are the browser(s) and version(s) where you see this issue?

Firefox: 127.0.2

What are the browser driver(s) and version(s) where you see this issue?

geckodriver: 0.34.0 (c44f0d09630a 2024-01-02 15:36 +0000)

Are you using Selenium Grid?

No response

github-actions[bot] commented 2 months ago

@Usielrivas, thank you for creating this issue. We will troubleshoot it as soon as we can.


Info for maintainers

Triage this issue by using labels.

If information is missing, add a helpful comment and then I-issue-template label.

If the issue is a question, add the I-question label.

If the issue is valid but there is no time to troubleshoot it, consider adding the help wanted label.

If the issue requires changes or fixes from an external project (e.g., ChromeDriver, GeckoDriver, MSEdgeDriver, W3C), add the applicable G-* label, and it will provide the correct link and auto-close the issue.

After troubleshooting the issue, please add the R-awaiting answer label.

Thank you!

whimboo commented 2 months ago

To repeat what I've said on https://github.com/mozilla/geckodriver/issues/2185#issuecomment-2232756443:

In Firefox 127 we landed a fix for https://bugzilla.mozilla.org/show_bug.cgi?id=1888004. That included an update of the Selenium atoms for 'getVisibleText' to revision 33c6b7841a59aaaad55744909c0600f066fd5593. This update includes the changes from https://github.com/SeleniumHQ/selenium/pull/13792.

@diemol could your patch have caused a regression for this atom and behavior for text-transform: capitalize?

There might have been a misunderstanding at that time, and I apologize for that. The change I proposed was only relevant to my case, and I didn't test any other scenarios. I assume there is no test in the Selenium code base that checks for accented characters, which would have caught this regression.