Skip to content

Commit c191aa6

Browse files
committed
add smoke test for the optional chaining operator
1 parent a052757 commit c191aa6

2 files changed

Lines changed: 69 additions & 0 deletions

File tree

src/changes/changes.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88

99
<body>
1010
<release version="4.15.0" date="August xx, 2025" description="Chrome/Edge 139, Firefox 141, Bugfixes">
11+
<action type="add" dev="RhinoTeam">
12+
core-js: Fix a regression regarding optional chaining operators.
13+
</action>
1114
<action type="add" dev="rbri">
1215
WebClient option pageRefreshLimit added. Refresh handling changed to support a clear limit.
1316
The initial value is 72 to be backward compatible.
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
/*
2+
* Copyright (c) 2002-2025 Gargoyle Software Inc.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
* https://www.apache.org/licenses/LICENSE-2.0
8+
*
9+
* Unless required by applicable law or agreed to in writing, software
10+
* distributed under the License is distributed on an "AS IS" BASIS,
11+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
* See the License for the specific language governing permissions and
13+
* limitations under the License.
14+
*/
15+
package org.htmlunit.javascript;
16+
17+
import org.htmlunit.WebDriverTestCase;
18+
import org.htmlunit.junit.annotation.Alerts;
19+
import org.junit.jupiter.api.Test;
20+
21+
/**
22+
* Tests for the optional chaining operator (?.).
23+
*
24+
* @author Ronald Brill
25+
*/
26+
public class OptionalChainingOperatorTest extends WebDriverTestCase {
27+
28+
/**
29+
* @throws Exception if the test fails
30+
*/
31+
@Test
32+
@Alerts({"undefined", "two"})
33+
public void basic() throws Exception {
34+
final String html = DOCTYPE_HTML
35+
+ "<html>\n"
36+
+ "<body>\n"
37+
+ "<script>\n"
38+
+ LOG_TITLE_FUNCTION_NORMALIZE
39+
+ " var o = { a: 'one', b: { c: 'two' }};\n"
40+
+ " log(o.x?.c);\n"
41+
+ " log(o.b?.c);\n"
42+
+ "</script>\n"
43+
+ "</body></html>";
44+
45+
loadPageVerifyTitle2(html);
46+
}
47+
48+
/**
49+
* @throws Exception if the test fails
50+
*/
51+
@Test
52+
@Alerts("true")
53+
public void parse() throws Exception {
54+
final String html = DOCTYPE_HTML
55+
+ "<html>\n"
56+
+ "<body>\n"
57+
+ "<script>\n"
58+
+ LOG_TITLE_FUNCTION_NORMALIZE
59+
+ " var o = {a: true};\n"
60+
+ " log(o?.['a']);\n"
61+
+ "</script>\n"
62+
+ "</body></html>";
63+
64+
loadPageVerifyTitle2(html);
65+
}
66+
}

0 commit comments

Comments
 (0)