Since Codecept 3.6.9, our test that looks for a date time doesn't find it (but it's there)

オープン
#4,632 コメント 17 件 リアクション 1 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
38/100
issue の種類
バグ
明瞭さ
説明が足りない
活発さ
静か
技術スタック
javascript, node.js, playwright
領域
testing-qa

調査の方向性

失敗が報告される lib/helper/Playwright.js:2854 と、呼び出し元のテストである codecept/user-logs.spec.js:39 から始めてください。CodeceptJS 3.6.7 と 3.6.9 で Playwright 1.49.1 を使用してリグレッションを再現し、次に waitForText の動作を調査し、原因を切り分けられる場合はリグレッションテストを追加してください。関連しないテキストチェックを弱めずに、表示されるタイムスタンプが見つかれば完了です。

索引モデルが issue の本文から書いたものです。

説明

stale

Hi, we're seeing this issue and we've tried pinning to older versions - 3.6.7 is OK.

What are you trying to achieve?

We have a test that's been passing up until now and does so with 3.6.7.

I can't use 3.6.8 because of Error: Cannot find module 'invisi-data' (I noticed a hotfix around this in the commits).

It started failing today (it could have failed sooner, we only noticed it today).

What do you get instead?

The following (I've noticed the UI here says 3.6.2, but when I do an npm list I am on 3.6.7, 3.6.8, or 3.6.9 depending on the test I am doing - we want to be on the latest and tried downgrading twice and as part of that verified 3.6.7 is ok).

image

This looks to me like it finds our text and then says it hasn't...

Provide console output if related. Use --verbose mode for more details.

1) User Logs
       It renders a User Log table:
     Text "2024-09-05 04:14:32.000" was not found on page after 1 sec.
      at Playwright.waitForText (node_modules/codeceptjs/lib/helper/Playwright.js:2854:26)
      at async Test.<anonymous> (codecept/user-logs.spec.js:39:3)
  
  

  2) User Logs
       It renders a new User Log table:
     Text "2024-09-06 10:14:50.000" was not found on page after 1 sec.
      at Playwright.waitForText (node_modules/codeceptjs/lib/helper/Playwright.js:2854:26)
      at runNextTicks (node:internal/process/task_queues:60:5)
      at process.processTimers (node:internal/timers:509:9)

Provide test source code if related
Sorry - I don't have a minimal reproduce yet - we basically have a simple logging page and we're looking for an event time on it in a row

Scenario('It renders a User Log table', async ({ I }) => {
  I.amOnPage('http://localhost:5057/iframe.html?args=&id=demo-logs-page--renders-correctly&viewMode=story')

  I.waitForText('Logs', 10)

  await sleep(10000)

  // Check there is a table
  I.seeElement('.IntegrationDataTable')
  I.seeNumberOfVisibleElements('.UserLogsPage__Table tbody tr[data-parent-row="true"]', 14)
  I.see('14 of 10000')

  // Check column headings
  I.see('Event time (UTC)')
  I.see('Message')
  I.see('Transaction ID')
  I.see('Flow ID')
  I.see('Log level')

  // Check first row
  let firstRow = locate('.UserLogsPage__Table tbody tr[data-parent-row="true"]').first()
  console.log('first', firstRow)

  await within(firstRow, () => {
    I.waitForText('2024-09-05 04:14:32.000') <---------- see here
  })
Details
  • CodeceptJS version: 3.6.9
  • NodeJS Version: we've tried with Node.js 22.9.0 and 18.20.4
  • Operating System: I'm on Mac OSX
  • puppeteer || webdriverio || testcafe version (if related)

We are using Playwright 1.49.1

  • Configuration file:

exports.config = {
  tests: './codecept/*.spec.js',
  output: './codecept/screenshots',
  retry: 2,
  helpers: {
    Playwright: {
      url: 'http://localhost:9010',
      show: false,
      browser: 'chromium',
      pressKeyDelay: 2,
      waitForAction: 5000
    }
  },
  bootstrap: null,
  mocha: {},
  name: 'ui-logging',
  plugins: {
    pauseOnFail: {},
    retryFailedStep: {
      enabled: true
    },
    tryTo: {
      enabled: true
    },
    screenshotOnFail: {
      enabled: true
    },
    customLocator: {
      enabled: true,
      attribute: 'data-testid'
    }
  }
}
主要言語
JavaScript
スター
4.2k
フォーク
756
平均マージ
2日 9時間
マージ済み PR(30日)
16

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

codeceptjs/CodeceptJS のほかの issue

codeceptjs/CodeceptJS の issue をすべて見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。