Defect #33181

IssuesSystemTest#test_index_as_csv_should_reflect_sort fails

Added by Go MAEDA over 1 year ago. Updated about 1 year ago.

Status:NewStart date:
Priority:NormalDue date:
Assignee:-% Done:

0%

Category:Code cleanup/refactoring
Target version:-
Resolution: Affected version:4.1.0

Description

IssuesSystemTest#test_index_as_csv_should_reflect_sort fails in trunk or 4.1-stable.

$ bin/rails test test/system/issues_test.rb
Run options: --seed 47671

# Running:

Capybara starting Puma...
* Version 3.12.2 , codename: Llamas in Pajamas
* Min threads: 0, max threads: 4
* Listening on tcp://127.0.0.1:57898
[Screenshot]: tmp/screenshots/failures_test_index_as_csv_should_reflect_sort.png
F

Failure:
IssuesSystemTest#test_index_as_csv_should_reflect_sort [/Users/maeda/redmines/4.1-stable/test/system/issues_test.rb:365]:
--- expected
+++ actual
@@ -1 +1 @@
-["Add ingredients categories", "Blocked Issue", "Cannot print recipes", "Error 281 when updating a recipe", "Issue Doing the Blocking", "Issue due today", "Issue of a private subproject", "Private issue on public project", "Subproject issue", "Subproject issue two", "Subtask", "The quick brown fox jumps over the lazy dog", "test"]
+["test", "Subtask", "The quick brown fox jumps over the lazy dog", "Private issue on public project", "Issue Doing the Blocking", "Blocked Issue", "Issue due today", "Add ingredients categories", "Subproject issue two", "Issue of a private subproject", "Subproject issue", "Error 281 when updating a recipe", "Cannot print recipes"]

bin/rails test test/system/issues_test.rb:351

History

#1 Updated by Yuichi HARADA over 1 year ago

The cause is probably that the file with the same name already exists at the download destination, and the download itself has not finished yet.
Depending on the test environment, a short wait will resolve the problem.

diff --git a/test/system/issues_test.rb b/test/system/issues_test.rb
index 8352a792f..4eda9184a 100644
--- a/test/system/issues_test.rb
+++ b/test/system/issues_test.rb
@@ -359,6 +359,7 @@ class IssuesSystemTest < ApplicationSystemTestCase

     # https://github.com/SeleniumHQ/selenium/issues/5292
     # if issues.csv exists, Chrome creates issues (1).csv, issues (2).csv ...
+    sleep 0.2
     csv = CSV.read(downloaded_file("issues*.csv"))
     subject_index = csv.shift.index('Subject')
     subjects = csv.map {|row| row[subject_index]}

#2 Updated by Go MAEDA about 1 year ago

  • Category set to Code cleanup/refactoring

Unfortunately, #33181#note-1 does not fix the problem in my environment. Maybe 0.2 seconds of sleep is not enough for the environment.

I think the following fix is independent of environments.

diff --git a/test/application_system_test_case.rb b/test/application_system_test_case.rb
index f529f07e6..8632e7072 100644
--- a/test/application_system_test_case.rb
+++ b/test/application_system_test_case.rb
@@ -74,12 +74,9 @@ class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
   def downloaded_file(filename='*')
     files = []
     Timeout.timeout(5) do
-      loop do
-        files = downloaded_files(filename)
-        break if files.present?
-        sleep 0.2
-      end
+      sleep 0.1 until downloaded?
     end
+    files = downloaded_files(filename)
     files.last
   end
 end

#3 Updated by Go MAEDA about 1 year ago

  • Target version set to 4.2.0

Setting the target version to 4.2.0.

#4 Updated by Go MAEDA about 1 year ago

  • Target version deleted (4.2.0)

#33181#note-2 does not work. Maybe I misunderstood something.

Also available in: Atom PDF