Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[grid] UI Sessions view sort Duration in ascending by default #14599

Merged
merged 1 commit into from
Oct 15, 2024

Conversation

VietND96
Copy link
Member

@VietND96 VietND96 commented Oct 14, 2024

Thanks for contributing to Selenium!
A PR well described will help maintainers to quickly review and merge it

Before submitting your PR, please check our contributing guidelines.
Avoid large PRs, help reviewers by making them as simple and short as possible.

Description

Motivation and Context

Fixes #11607

  • Sessions duration will be sorted as Number instead of string to return the correct order.
  • Update default sort by Duration in ascending (instead of Start time). Since Start time is sorted as string, and the order in ascending can be incorrect in few scenarios e.g
- "01/11/2024 00:00:01"
- "31/10/2024 22:59:59"
- "31/10/2024 23:59:59"

While expecting

- "01/11/2024 00:00:01"
- "31/10/2024 23:59:59"
- "31/10/2024 22:59:59"

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist

  • I have read the contributing document.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have added tests to cover my changes.
  • All new and existing tests passed.

@VietND96 VietND96 requested a review from diemol October 14, 2024 19:42
Copy link
Contributor

PR Reviewer Guide 🔍

Here are some key observations to aid the review process:

⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
🧪 No relevant tests
🔒 No security concerns identified
⚡ Recommended focus areas for review

Potential Performance Issue
The descendingComparator function now includes a type check for 'sessionDurationMillis'. This could potentially impact performance if the function is called frequently. Consider optimizing this logic if it becomes a bottleneck.

Type Safety
The use of Number() to convert sessionDurationMillis values might not be the safest approach. Consider using a more robust type checking or conversion method to ensure the values are always valid numbers.

Copy link
Contributor

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Score
Enhancement
Implement a more generic approach for numeric comparisons in the sorting function

Instead of using a conditional check for 'sessionDurationMillis', consider using a
more generic approach that works for all numeric fields. This will make the function
more flexible and easier to maintain if new numeric fields are added in the future.

javascript/grid-ui/src/components/RunningSessions/RunningSessions.tsx [54-61]

 function descendingComparator<T> (a: T, b: T, orderBy: keyof T): number {
-  if (orderBy === 'sessionDurationMillis') {
-    return Number(b[orderBy]) - Number(a[orderBy])
+  const aValue = a[orderBy];
+  const bValue = b[orderBy];
+  if (typeof aValue === 'number' && typeof bValue === 'number') {
+    return bValue - aValue;
   }
-  if (b[orderBy] < a[orderBy]) {
-    return -1
+  if (bValue < aValue) {
+    return -1;
   }
-  if (b[orderBy] > a[orderBy]) {
-    return 1
+  if (bValue > aValue) {
+    return 1;
   }
-  return 0
+  return 0;
 }
  • Apply this suggestion
Suggestion importance[1-10]: 8

Why: The suggestion improves the flexibility and maintainability of the descendingComparator function by handling all numeric fields generically. This change reduces the need for future modifications if additional numeric fields are introduced.

8
Improve type safety in the sorting function by using a more specific type for sortable keys

Consider using a more type-safe approach by defining a custom type for the orderBy
parameter in the descendingComparator function. This will ensure that only valid
keys of SessionData can be used for sorting.

javascript/grid-ui/src/components/RunningSessions/RunningSessions.tsx [54-61]

-function descendingComparator<T> (a: T, b: T, orderBy: keyof T): number {
+type SortableKeys = keyof Pick<SessionData, 'sessionDurationMillis' | 'startTime' | 'id'>
+
+function descendingComparator(a: SessionData, b: SessionData, orderBy: SortableKeys): number {
   if (orderBy === 'sessionDurationMillis') {
-    return Number(b[orderBy]) - Number(a[orderBy])
+    return b[orderBy] - a[orderBy]
   }
   if (b[orderBy] < a[orderBy]) {
     return -1
   }
   if (b[orderBy] > a[orderBy]) {
     return 1
   }
   return 0
 }
  • Apply this suggestion
Suggestion importance[1-10]: 7

Why: This suggestion enhances type safety by restricting the orderBy parameter to specific keys of SessionData, reducing the risk of runtime errors due to invalid keys. It is a valuable improvement for maintainability and correctness.

7
Add default sort directions for each column to improve user experience

Consider adding a default sort direction for each column in the headCells array.
This will allow you to specify different initial sort directions for different
columns, providing a more intuitive user experience.

javascript/grid-ui/src/components/RunningSessions/RunningSessions.tsx [96-101]

 const headCells: HeadCell[] = [
-  { id: 'id', numeric: false, label: 'Session' },
-  { id: 'capabilities', numeric: false, label: 'Capabilities' },
-  { id: 'startTime', numeric: false, label: 'Start time' },
-  { id: 'sessionDurationMillis', numeric: true, label: 'Duration' },
-  { id: 'nodeUri', numeric: false, label: 'Node URI' }
+  { id: 'id', numeric: false, label: 'Session', defaultOrder: 'asc' },
+  { id: 'capabilities', numeric: false, label: 'Capabilities', defaultOrder: 'asc' },
+  { id: 'startTime', numeric: false, label: 'Start time', defaultOrder: 'desc' },
+  { id: 'sessionDurationMillis', numeric: true, label: 'Duration', defaultOrder: 'asc' },
+  { id: 'nodeUri', numeric: false, label: 'Node URI', defaultOrder: 'asc' }
 ]
  • Apply this suggestion
Suggestion importance[1-10]: 6

Why: Adding default sort directions for each column enhances the user experience by providing intuitive initial sorting behavior. While beneficial, this change is more about user interface improvement than addressing a critical issue.

6

💡 Need additional feedback ? start a PR chat

Copy link
Contributor

qodo-merge-pro bot commented Oct 14, 2024

CI Failure Feedback 🧐

(Checks updated until commit ae1a741)

Action: Ruby / Remote Tests (edge, windows) / Remote Tests (edge, windows)

Failed stage: Run Bazel [❌]

Failed test name: Selenium::WebDriver::Remote::Driver errors when not set

Failure summary:

The action failed because the test Selenium::WebDriver::Remote::Driver errors when not set did not
pass. The test expected a Selenium::WebDriver::Error::WebDriverError to be raised with the message
"You must enable downloads in order to work with downloadable files." However, it received a
Selenium::WebDriver::Error::UnknownError instead, indicating that the downloads file system could
not be found for the session.

Relevant error logs:
1:  ##[group]Operating System
2:  Microsoft Windows Server 2022
...

603:  �[32m[1 / 1]�[0m checking cached actions
604:  �[32mAnalyzing:�[0m 29 targets (702 packages loaded, 15361 targets configured)
605:  �[32m[1 / 1]�[0m checking cached actions
606:  �[32mAnalyzing:�[0m 29 targets (702 packages loaded, 49932 targets configured)
607:  �[32m[1 / 23]�[0m [Prepa] Writing repo mapping manifest for //rb/spec/integration/selenium/webdriver:select-edge-remote
608:  �[32mINFO: �[0mAnalyzed 29 targets (702 packages loaded, 49932 targets configured).
609:  �[32m[5 / 30]�[0m [Prepa] Creating source manifest for //rb/lib/selenium/devtools:cdp-generate [for tool] ... (4 actions, 3 running)
610:  �[32m[21 / 62]�[0m [Prepa] Writing repo mapping manifest for //rb/spec/integration/selenium/webdriver:timeout-edge-remote
611:  �[32m[38 / 83]�[0m [Prepa] Creating source manifest for //rb/spec/integration/selenium/webdriver:error-edge-remote ... (2 actions, 0 running)
...

833:  Successfully installed bundler-2.5.14
834:  1 gem installed
835:  �[32m[3,007 / 3,139]�[0m Splitting Javascript ../../../javascript/grid-ui/src/index.tsx [esbuild]; 3s local, disk-cache ... (3 actions, 2 running)
836:  �[32m[3,009 / 3,139]�[0m Running bundle install (@bundle//:bundle); 1s local, disk-cache ... (3 actions, 2 running)
837:  �[32m[3,010 / 3,139]�[0m Running bundle install (@bundle//:bundle); 2s local, disk-cache ... (3 actions, 1 running)
838:  �[32m[3,010 / 3,139]�[0m Running bundle install (@bundle//:bundle); 3s local, disk-cache ... (3 actions running)
839:  �[32m[3,011 / 3,139]�[0m Running bundle install (@bundle//:bundle); 5s local, disk-cache ... (3 actions, 2 running)
840:  �[32mINFO: �[0mFrom Building java/src/org/openqa/selenium/remote/libapi-class.jar (71 source files):
841:  java\src\org\openqa\selenium\remote\ErrorHandler.java:46: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
842:  private final ErrorCodes errorCodes;
843:  ^
844:  java\src\org\openqa\selenium\remote\ErrorHandler.java:60: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
845:  this.errorCodes = new ErrorCodes();
846:  ^
847:  java\src\org\openqa\selenium\remote\ErrorHandler.java:68: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
848:  public ErrorHandler(ErrorCodes codes, boolean includeServerErrors) {
849:  ^
850:  java\src\org\openqa\selenium\remote\Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
851:  ErrorCodes errorCodes = new ErrorCodes();
852:  ^
853:  java\src\org\openqa\selenium\remote\Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
854:  ErrorCodes errorCodes = new ErrorCodes();
855:  ^
856:  java\src\org\openqa\selenium\remote\ProtocolHandshake.java:181: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
857:  response.setStatus(ErrorCodes.SUCCESS);
858:  ^
859:  java\src\org\openqa\selenium\remote\ProtocolHandshake.java:182: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
860:  response.setState(ErrorCodes.SUCCESS_STRING);
861:  ^
862:  java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:53: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
863:  new ErrorCodes().toStatus((String) rawError, Optional.of(tuple.getStatusCode())));
864:  ^
865:  java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:56: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
866:  new ErrorCodes().getExceptionType((String) rawError);
867:  ^
868:  java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:44: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
869:  private final ErrorCodes errorCodes = new ErrorCodes();
870:  ^
871:  java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:44: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
872:  private final ErrorCodes errorCodes = new ErrorCodes();
873:  ^
874:  java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:55: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
875:  int status = response.getStatus() == ErrorCodes.SUCCESS ? HTTP_OK : HTTP_INTERNAL_ERROR;
876:  ^
877:  java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:101: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
878:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
879:  ^
880:  java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:103: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
881:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
882:  ^
883:  java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:117: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
884:  response.setStatus(ErrorCodes.SUCCESS);
885:  ^
886:  java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:118: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
887:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
888:  ^
889:  java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:124: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
890:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
891:  ^
892:  java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:70: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
893:  private final ErrorCodes errorCodes = new ErrorCodes();
894:  ^
895:  java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:70: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
896:  private final ErrorCodes errorCodes = new ErrorCodes();
897:  ^
898:  java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:93: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
899:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
900:  ^
901:  java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:98: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
902:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
903:  ^
904:  java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:145: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
905:  response.setStatus(ErrorCodes.SUCCESS);
...

1106:  �[32m[3,150 / 3,163]�[0m 11 / 29 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote; 164s local, disk-cache ... (4 actions, 2 running)
1107:  �[32m[3,150 / 3,163]�[0m 11 / 29 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote; 167s local, disk-cache ... (4 actions, 2 running)
1108:  �[32m[3,150 / 3,163]�[0m 11 / 29 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote; 186s local, disk-cache ... (4 actions, 2 running)
1109:  �[32m[3,151 / 3,163]�[0m 12 / 29 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote; 188s local, disk-cache ... (4 actions, 1 running)
1110:  �[32m[3,151 / 3,163]�[0m 12 / 29 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote; 198s local, disk-cache ... (4 actions, 1 running)
1111:  �[32m[3,151 / 3,163]�[0m 12 / 29 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote; 200s local, disk-cache ... (4 actions, 1 running)
1112:  �[32m[3,151 / 3,163]�[0m 12 / 29 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote; 214s local, disk-cache ... (4 actions, 2 running)
1113:  �[31m�[1mFAIL: �[0m//rb/spec/integration/selenium/webdriver/remote:driver-edge-remote (see D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/remote/driver-edge-remote/test.log)
1114:  �[31m�[1mFAILED: �[0m//rb/spec/integration/selenium/webdriver/remote:driver-edge-remote (Summary)
...

1129:  Selenium::WebDriver::Remote::Driver
1130:  exposes session_id
1131:  exposes remote status
1132:  Request#[] is deprecated and will be removed in a future version of Rack. Please use request.params[] instead
1133:  uses a default file detector
1134:  lists downloads
1135:  downloads a file
1136:  deletes downloadable files
1137:  errors when not set (FAILED - 1)
1138:  Failures:
1139:  1) Selenium::WebDriver::Remote::Driver errors when not set
1140:  Failure/Error:
1141:  expect {
1142:  driver.downloadable_files
1143:  }.to raise_exception(Error::WebDriverError,
1144:  'You must enable downloads in order to work with downloadable files.')
1145:  expected Selenium::WebDriver::Error::WebDriverError with "You must enable downloads in order to work with downloadable files.", got #<Selenium::WebDriver::Error::UnknownError: Cannot find downloads file system for session id: 0dfdfbe... os.arch: 'amd64', os.version: '10.0', java.version: '17.0.11'
1146:  Driver info: driver.version: unknown> with backtrace:
1147:  # ./rb/lib/selenium/webdriver/remote/response.rb:63:in `add_cause'
1148:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
...

1154:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
1155:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:685:in `execute'
1156:  # ./rb/lib/selenium/webdriver/remote/features.rb:62:in `downloadable_files'
1157:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_file_downloads.rb:27:in `downloadable_files'
1158:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:87:in `block (3 levels) in <module:Remote>'
1159:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:86:in `block (2 levels) in <module:Remote>'
1160:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:86:in `block (2 levels) in <module:Remote>'
1161:  Finished in 22.49 seconds (files took 0.64102 seconds to load)
1162:  7 examples, 1 failure
1163:  Failed examples:
1164:  rspec ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:84 # Selenium::WebDriver::Remote::Driver errors when not set
...

1176:  Selenium::WebDriver::Remote::Driver
1177:  exposes session_id
1178:  exposes remote status
1179:  Request#[] is deprecated and will be removed in a future version of Rack. Please use request.params[] instead
1180:  uses a default file detector
1181:  lists downloads
1182:  downloads a file
1183:  deletes downloadable files
1184:  errors when not set (FAILED - 1)
1185:  Failures:
1186:  1) Selenium::WebDriver::Remote::Driver errors when not set
1187:  Failure/Error:
1188:  expect {
1189:  driver.downloadable_files
1190:  }.to raise_exception(Error::WebDriverError,
1191:  'You must enable downloads in order to work with downloadable files.')
1192:  expected Selenium::WebDriver::Error::WebDriverError with "You must enable downloads in order to work with downloadable files.", got #<Selenium::WebDriver::Error::UnknownError: Cannot find downloads file system for session id: c3df3ea... os.arch: 'amd64', os.version: '10.0', java.version: '17.0.11'
1193:  Driver info: driver.version: unknown> with backtrace:
1194:  # ./rb/lib/selenium/webdriver/remote/response.rb:63:in `add_cause'
1195:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
...

1201:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
1202:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:685:in `execute'
1203:  # ./rb/lib/selenium/webdriver/remote/features.rb:62:in `downloadable_files'
1204:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_file_downloads.rb:27:in `downloadable_files'
1205:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:87:in `block (3 levels) in <module:Remote>'
1206:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:86:in `block (2 levels) in <module:Remote>'
1207:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:86:in `block (2 levels) in <module:Remote>'
1208:  Finished in 20.48 seconds (files took 0.70353 seconds to load)
1209:  7 examples, 1 failure
1210:  Failed examples:
1211:  rspec ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:84 # Selenium::WebDriver::Remote::Driver errors when not set
...

1223:  Selenium::WebDriver::Remote::Driver
1224:  exposes session_id
1225:  exposes remote status
1226:  Request#[] is deprecated and will be removed in a future version of Rack. Please use request.params[] instead
1227:  uses a default file detector
1228:  lists downloads
1229:  downloads a file
1230:  deletes downloadable files
1231:  errors when not set (FAILED - 1)
1232:  Failures:
1233:  1) Selenium::WebDriver::Remote::Driver errors when not set
1234:  Failure/Error:
1235:  expect {
1236:  driver.downloadable_files
1237:  }.to raise_exception(Error::WebDriverError,
1238:  'You must enable downloads in order to work with downloadable files.')
1239:  expected Selenium::WebDriver::Error::WebDriverError with "You must enable downloads in order to work with downloadable files.", got #<Selenium::WebDriver::Error::UnknownError: Cannot find downloads file system for session id: 91bd306... os.arch: 'amd64', os.version: '10.0', java.version: '17.0.11'
1240:  Driver info: driver.version: unknown> with backtrace:
1241:  # ./rb/lib/selenium/webdriver/remote/response.rb:63:in `add_cause'
1242:  # ./rb/lib/selenium/webdriver/remote/response.rb:41:in `error'
...

1248:  # ./rb/lib/selenium/webdriver/remote/http/common.rb:67:in `call'
1249:  # ./rb/lib/selenium/webdriver/remote/bridge.rb:685:in `execute'
1250:  # ./rb/lib/selenium/webdriver/remote/features.rb:62:in `downloadable_files'
1251:  # ./rb/lib/selenium/webdriver/common/driver_extensions/has_file_downloads.rb:27:in `downloadable_files'
1252:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:87:in `block (3 levels) in <module:Remote>'
1253:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:86:in `block (2 levels) in <module:Remote>'
1254:  # ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:86:in `block (2 levels) in <module:Remote>'
1255:  Finished in 21.06 seconds (files took 0.69762 seconds to load)
1256:  7 examples, 1 failure
1257:  Failed examples:
1258:  rspec ./rb/spec/integration/selenium/webdriver/remote/driver_spec.rb:84 # Selenium::WebDriver::Remote::Driver errors when not set
1259:  ================================================================================
1260:  �[32m[3,152 / 3,163]�[0m 13 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:storage-edge-remote; 48s ... (4 actions, 1 running)
1261:  �[32m[3,152 / 3,163]�[0m 13 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:storage-edge-remote; 58s ... (4 actions, 1 running)
1262:  �[32m[3,152 / 3,163]�[0m 13 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:storage-edge-remote; 61s ... (4 actions, 1 running)
1263:  �[32m[3,152 / 3,163]�[0m 13 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 42s ... (4 actions, 2 running)
1264:  �[32m[3,153 / 3,163]�[0m 14 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 43s ... (4 actions, 1 running)
1265:  �[32m[3,153 / 3,163]�[0m 14 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 54s ... (4 actions, 1 running)
1266:  �[32m[3,153 / 3,163]�[0m 14 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 56s ... (4 actions, 1 running)
1267:  �[32m[3,153 / 3,163]�[0m 14 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 32s ... (4 actions, 2 running)
1268:  �[32m[3,154 / 3,163]�[0m 15 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 34s ... (4 actions, 1 running)
1269:  �[32m[3,154 / 3,163]�[0m 15 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 44s ... (4 actions, 1 running)
1270:  �[32m[3,154 / 3,163]�[0m 15 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 46s ... (4 actions, 1 running)
1271:  �[32m[3,154 / 3,163]�[0m 15 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 27s ... (4 actions, 2 running)
1272:  �[32m[3,155 / 3,163]�[0m 16 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 28s ... (4 actions, 1 running)
1273:  �[32m[3,155 / 3,163]�[0m 16 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 38s ... (4 actions, 1 running)
1274:  �[32m[3,155 / 3,163]�[0m 16 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 40s ... (4 actions, 1 running)
1275:  �[32m[3,155 / 3,163]�[0m 16 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 24s ... (4 actions, 2 running)
1276:  �[32m[3,156 / 3,163]�[0m 17 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 26s ... (4 actions, 1 running)
1277:  �[32m[3,156 / 3,163]�[0m 17 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 35s ... (4 actions, 1 running)
1278:  �[32m[3,156 / 3,163]�[0m 17 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 38s ... (4 actions, 1 running)
1279:  �[32m[3,156 / 3,163]�[0m 17 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 30s ... (4 actions, 2 running)
1280:  �[32m[3,157 / 3,163]�[0m 18 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 32s ... (4 actions, 1 running)
1281:  �[32m[3,157 / 3,163]�[0m 18 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 42s ... (4 actions, 1 running)
1282:  �[32m[3,157 / 3,163]�[0m 18 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 43s ... (4 actions, 1 running)
1283:  �[32m[3,157 / 3,163]�[0m 18 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:target_locator-edge-remote; 29s ... (4 actions, 2 running)
1284:  �[32m[3,158 / 3,163]�[0m 19 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:target_locator-edge-remote; 30s ... (4 actions, 1 running)
1285:  �[32m[3,158 / 3,163]�[0m 19 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:target_locator-edge-remote; 41s ... (4 actions, 1 running)
1286:  �[32m[3,158 / 3,163]�[0m 19 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:target_locator-edge-remote; 43s ... (4 actions, 1 running)
1287:  �[32m[3,158 / 3,163]�[0m 19 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 17s ... (4 actions, 2 running)
1288:  �[32m[3,159 / 3,163]�[0m 20 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 19s ... (4 actions, 1 running)
1289:  �[32m[3,159 / 3,163]�[0m 20 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 29s ... (4 actions, 1 running)
1290:  �[32m[3,159 / 3,163]�[0m 20 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 33s ... (4 actions, 1 running)
1291:  �[32m[3,159 / 3,163]�[0m 20 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 29s ... (4 actions, 2 running)
1292:  �[32m[3,160 / 3,163]�[0m 21 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 31s ... (3 actions, 1 running)
1293:  �[32m[3,160 / 3,163]�[0m 21 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 41s ... (3 actions, 1 running)
1294:  �[32m[3,160 / 3,163]�[0m 21 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:error-edge-remote; 32s ... (3 actions, 2 running)
1295:  �[32m[3,161 / 3,163]�[0m 22 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:error-edge-remote; 34s ... (2 actions, 1 running)
1296:  �[32m[3,161 / 3,163]�[0m 22 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:error-edge-remote; 43s ... (2 actions, 1 running)
1297:  �[32m[3,161 / 3,163]�[0m 22 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 16s local, disk-cache ... (2 actions running)
1298:  �[32m[3,162 / 3,163]�[0m 23 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:error-edge-remote; 0s local, disk-cache
1299:  �[32m[3,162 / 3,163]�[0m 23 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:error-edge-remote; 11s local, disk-cache
1300:  �[32m[3,162 / 3,163]�[0m 23 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:error-edge-remote; 14s local, disk-cache
1301:  �[32m[3,163 / 3,164]�[0m 24 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 1s disk-cache
1302:  �[32m[3,163 / 3,164]�[0m 24 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote
1303:  �[32m[3,163 / 3,164]�[0m 24 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 1s local, disk-cache
1304:  �[32m[3,163 / 3,164]�[0m 24 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 14s local, disk-cache
1305:  �[32m[3,164 / 3,165]�[0m 25 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 0s disk-cache
1306:  �[32m[3,164 / 3,165]�[0m 25 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote
1307:  �[32m[3,164 / 3,165]�[0m 25 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 1s local, disk-cache
1308:  �[32m[3,164 / 3,165]�[0m 25 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 84s local, disk-cache
1309:  �[32m[3,165 / 3,166]�[0m 26 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 0s disk-cache
1310:  �[32m[3,165 / 3,166]�[0m 26 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote
1311:  �[32m[3,165 / 3,166]�[0m 26 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 1s local, disk-cache
1312:  �[32m[3,165 / 3,166]�[0m 26 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 14s local, disk-cache
1313:  �[32m[3,166 / 3,167]�[0m 27 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 0s disk-cache
1314:  �[32m[3,166 / 3,167]�[0m 27 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote
1315:  �[32m[3,166 / 3,167]�[0m 27 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 1s local, disk-cache
1316:  �[32m[3,166 / 3,167]�[0m 27 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 14s local, disk-cache
1317:  �[32m[3,167 / 3,168]�[0m 28 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 1s disk-cache
1318:  �[32m[3,167 / 3,168]�[0m 28 / 29 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote
1319:  �[32m[3,167 / 3,168]�[0m 28 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 1s local, disk-cache
1320:  �[32m[3,167 / 3,168]�[0m 28 / 29 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 14s local, disk-cache
1321:  �[32mINFO: �[0mFound 29 test targets...
1322:  �[32mINFO: �[0mElapsed time: 1642.523s, Critical Path: 754.77s
1323:  �[32mINFO: �[0m2889 processes: 1449 disk cache hit, 1180 internal, 226 local, 34 worker.
1324:  �[32mINFO: �[0mBuild completed, 1 test FAILED, 2889 total actions
1325:  //rb/spec/integration/selenium/webdriver:action_builder-edge-remote      �[0m�[32mPASSED�[0m in 28.2s
1326:  //rb/spec/integration/selenium/webdriver:bidi-edge-remote                �[0m�[32mPASSED�[0m in 14.4s
1327:  //rb/spec/integration/selenium/webdriver:devtools-edge-remote            �[0m�[32mPASSED�[0m in 84.8s
1328:  //rb/spec/integration/selenium/webdriver:driver-edge-remote              �[0m�[32mPASSED�[0m in 64.4s
1329:  //rb/spec/integration/selenium/webdriver:element-edge-remote             �[0m�[32mPASSED�[0m in 28.9s
1330:  //rb/spec/integration/selenium/webdriver:error-edge-remote               �[0m�[32mPASSED�[0m in 14.3s
...

1345:  //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote �[0m�[32mPASSED�[0m in 14.4s
1346:  //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote  �[0m�[32mPASSED�[0m in 14.4s
1347:  //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote         �[0m�[32mPASSED�[0m in 14.5s
1348:  //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote         �[0m�[32mPASSED�[0m in 33.5s
1349:  //rb/spec/integration/selenium/webdriver/edge:options-edge-remote        �[0m�[32mPASSED�[0m in 20.8s
1350:  //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote        �[0m�[32mPASSED�[0m in 15.0s
1351:  //rb/spec/integration/selenium/webdriver/edge:service-edge-remote        �[0m�[32mPASSED�[0m in 21.0s
1352:  //rb/spec/integration/selenium/webdriver/remote:element-edge-remote      �[0m�[32mPASSED�[0m in 16.8s
1353:  //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote       �[0m�[31m�[1mFAILED�[0m in 3 out of 3 in 29.4s
1354:  Stats over 3 runs: max = 29.4s, min = 27.6s, avg = 28.3s, dev = 0.8s
1355:  D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/remote/driver-edge-remote/test.log
1356:  D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/remote/driver-edge-remote/test_attempts/attempt_1.log
1357:  D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/remote/driver-edge-remote/test_attempts/attempt_2.log
1358:  Executed 29 out of 29 tests: 28 tests pass and �[0m�[31m�[1m1 fails locally�[0m.
1359:  There were tests whose specified size is too big. Use the --test_verbose_timeout_warnings command line option to see which ones these are.
1360:  �[0m
1361:  ##[error]Process completed with exit code 1.

✨ CI feedback usage guide:

The CI feedback tool (/checks) automatically triggers when a PR has a failed check.
The tool analyzes the failed checks and provides several feedbacks:

  • Failed stage
  • Failed test name
  • Failure summary
  • Relevant error logs

In addition to being automatically triggered, the tool can also be invoked manually by commenting on a PR:

/checks "https://github.com/{repo_name}/actions/runs/{run_number}/job/{job_number}"

where {repo_name} is the name of the repository, {run_number} is the run number of the failed check, and {job_number} is the job number of the failed check.

Configuration options

  • enable_auto_checks_feedback - if set to true, the tool will automatically provide feedback when a check is failed. Default is true.
  • excluded_checks_list - a list of checks to exclude from the feedback, for example: ["check1", "check2"]. Default is an empty list.
  • enable_help_text - if set to true, the tool will provide a help message with the feedback. Default is true.
  • persistent_comment - if set to true, the tool will overwrite a previous checks comment with the new feedback. Default is true.
  • final_update_message - if persistent_comment is true and updating a previous checks message, the tool will also create a new message: "Persistent checks updated to latest commit". Default is true.

See more information about the checks tool in the docs.

@VietND96 VietND96 merged commit c6e78d8 into trunk Oct 15, 2024
26 of 29 checks passed
@VietND96 VietND96 deleted the grid-ui-sort-duration branch October 15, 2024 02:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
1 participant