在我的 WSL2 系统上运行测试时遇到问题

您是指在本地运行类似这样的命令会失败吗?

~/work/discourse [main] $ rspec spec/system/user_activity_bookmarks_spec.rb

Randomized with seed 38950
...

Finished in 7.71 seconds (files took 2.5 seconds to load)
3 examples, 0 failures

非常感谢!我已经批准了该 PR,并将很快合并它。

3 个赞

是的,

只有我的测试有效。
在 WSL2、Ubuntu 22 上进行了测试。

(base) arkshine@HOME:~/discourse$ rspec spec/system/user_activity_bookmarks_spec.rb

Finished in 28.13 seconds (files took 4.64 seconds to load)
4 examples, 3 failures

Failed examples:

rspec ./spec/system/user_activity_bookmarks_spec.rb:36 # User activity bookmarks can filter the list of bookmarks from the URL
rspec ./spec/system/user_activity_bookmarks_spec.rb:43 # User activity bookmarks can filter the list of bookmarks
rspec ./spec/system/user_activity_bookmarks_spec.rb:50 # User activity bookmarks can clear the query

由于某些原因,没有注册书签:

1 个赞

您的测试失败后有任何失败消息吗?

没有错误。以下是完整输出:

(base) arkshine@HOME:~/discourse$ rspec spec/system/user_activity_bookmarks_spec.rb
WARN: 解决或模糊的规格在 Gem::Specification.reset 期间未解决:
      optimist (>= 3.0.0)
      已安装/可用版本:
      - 3.2.1
      - 3.2.0
      rdoc (>= 4.0.0)
      已安装/可用版本:
      - 6.12.0
      - 6.6.3.1
WARN: 清除未解决的规格。试试 'gem cleanup <gem>'
如果造成问题,请报告错误。

随机种子为 5318
未知 OID 931304:无法识别 'embeddings' 的类型。它将被视为字符串。
FFF.

失败情况:

  1) 用户活动书签可以过滤书签列表
     失败/错误:super
     
     Capybara::ElementNotFound:
       无法找到不被禁用的字段 "bookmark-search"
     
     [截图图片]:/home/arkshine/discourse/tmp/capybara/failures_r_spec_example_groups_user_activity_bookmarks_can_filter_the_list_of_bookmarks_300.png

     ~~~~~~~ JS 日志 ~~~~~~~
     ~~~~~ END JS 日志 ~~~~~~~
     
     # ./spec/system/page_objects/pages/user_activity_bookmarks.rb:29:in `fill_in_search'
     # ./spec/system/page_objects/pages/user_activity_bookmarks.rb:14:in `search_for'
     # ./spec/system/user_activity_bookmarks_spec.rb:44:in `block (2 层) in cmaine'

  2) 用户活动书签可以通过 URL 过滤书签列表
     失败/错误:期望 `#<PageObjects::Pages::UserActivityBookmarks:0x00007f3d48e29f28>.has_topic?(#<Topic id: 917, title: "这是一个测试主题 0", last_posted_at: nil, created_at: "2025-03-21 02:48:...oad_id: nil, slow_mode_seconds: 0, bannered_until: nil, external_id: nil, visibility_reason_id: nil>)` 为真,但得到 false
     
     [截图图片]:/home/arkshine/discourse/tmp/capybara/failures_r_spec_example_groups_user_activity_bookmarks_can_filter_the_list_of_bookmarks_from_the_url_846.png

     ~~~~~~~ JS 日志 ~~~~~~~
     ~~~~~ END JS 日志 ~~~~~~~
     
     # ./spec/system/user_activity_bookmarks_spec.rb:40:in `block (2 层) in cmaine'

  3) 用户活动书签可以清除查询
     失败/错误:super
     
     Capybara::ElementNotFound:
       无法找到不被禁用的字段 "bookmark-search"
     
     [截图图片]:/home/arkshine/discourse/tmp/capybara/failures_r_spec_example_groups_user_activity_bookmarks_can_clear_the_query_761.png

     ~~~~~~~ JS 日志 ~~~~~~~
     ~~~~~ END JS 日志 ~~~~~~~
     
     # ./spec/system/page_objects/pages/user_activity_bookmarks.rb:29:in `fill_in_search'
     # ./spec/system/page_objects/pages/user_activity_bookmarks.rb:14:in `search_for'
     # ./spec/system/user_activity_bookmarks_spec.rb:51:in `block (2 层) in cmaine'

  完成时间:21.11秒(文件加载用时5.2秒)
4 个示例,3 个失败

失败的示例:

rspec ./spec/system/user_activity_bookmarks_spec.rb:43 # 用户活动书签可以过滤书签列表
rspec ./spec/system/user_activity_bookmarks_spec.rb:36 # 用户活动书签可以通过 URL 过滤书签列表
rspec ./spec/system/user_activity_bookmarks_spec.rb:50 # 用户活动书签可以清除查询

随机种子 5318

你有没有快速看一下这些图片?我想知道它们是否能为测试运行器为何不工作提供线索。

(还有点失望我们的 AI 机器人还没有催促我们开一个新话题;p)

编辑 问题已解决……

2 个赞

我在测试中加入了一个 sleep,并用 SELENIUM_HEADLESS=0 启动了 rspec。
我发现我可以看到创建的主题,但无法访问它们。
这解释了为什么我没有看到书签!

这立刻让我想起了我在 TC 中进行测试或运行现有测试时遇到的一个问题:如果有一个没有定义类别的 fab 主题,我在测试中就无法访问它。

所以,如果我这样做:

我看到了书签:

并且测试正在工作:
image

不清楚为什么我的环境中会发生这种情况。
核心测试中有许多没有指定类别的 fab 主题,而这些测试在 GitHub 上是有效的。有什么区别?