Rails DateHelper translations

An interesting bug occured to one of our projects: today, on the 1st of March, some system tests started failing. The reason: difference in translation of the timestamp. What has been translated as:

  The questionnaire was not completed yet. Proceed ... (2 months)

started to be translated as

  The questionnaire was not completed yet. Proceed ... (about 2 months)

Tested objects were created with a timestamp 2.months.ago => today it means Sat, 01 Jan 2022. In a view this timestamp is translated with the date helper time_ago_in_words. In the documentation I found that a threshold between about 2 months and 2 month is 59 days.

Since February has 28 days and January 31 days , the timestamp in tests is equal to 59 days. It seems like documentation is not precise enough though:

From docs:

  44 days, 23 hrs, 59 mins, 30 secs <-> 59 days, 23 hrs, 59 mins, 29 secs  
 # => about 2 months
  59 days, 23 hrs, 59 mins, 30 secs <-> 1 yr minus 1 sec
 # => [2..12] months

From console:

>> 2.months.ago
=> Sat, 01 Jan 2022 10:25:48.330338000 CET +01:00
>> 31 + 28
=> 59
>> time_ago_in_words(59.days.ago)
=> "about 2 months"
>> time_ago_in_words(60.days.ago)
=> "2 months"

59 days is still translated as about 2 months and everything above as %{count} months.

The fix is to change the timestamp in tests to not rely on this translation difference.