28

ハイゼンバグを捕まえようとしています。

プロジェクトを Ember CLI 0.2.0 および Ember 1.10.0 から Ember CLI 0.2.3 および Ember 1.11.1 に更新しています。これは非常に簡単なプロセスでしたが、Safari (7.1.5) でのみ失敗するテストが 1 つだけあります。PhantomJS、Chrome、および Firefox で渡されます。

厄介なことに、テストが失敗するのは、Testem によってテスト実行が開始されたとき (つまり、コードの変更によって自動更新テスト実行がトリガーされたとき) だけです。Qunit Web インターフェイス内からテストを開始すると、合格します。これらは両方とも、テストのグループ化に関係なく当てはまります。テスト中の機能は、ブラウザで手動で実行すると問題なく動作します。

これは統合テストであり、入力で値が変更されると、サーバーから返された値で入力が更新されることを確認します。テストでは、「サーバー」は Pretender インスタンスです。テスト自体は次のようになります。

test('Editing allocation cell', function() {
  visit('/district/periods');

  fillIn(SELECTORS.definitionRowInput(1,0), '100');
  triggerEvent(SELECTORS.definitionRowInput(1,0), 'focusout');
  // The triggerEvent should be tripping the focusOut event on a particular
  // Ember.Textfield subclass, which subsequently leads to a POST request to
  // the server. On Safari, however, the focusOut event isn't being called here.
  // It is called elsewhere in the app, and it works in production.
  // Things that also don't work: keyEvent(element, 'keypress', 16) (a tab), 
  // sending 'blur', sending 'focus-out'.
  // 'focus-out' also fails in Firefox, 'blur' and tab fail in all 4 envs

  andThen(function() {
    equal($(SELECTORS.definitionRowInput(1,0)).val(), '90', 'The updated input takes the return value from the server (even if it is different from input)');
    equal($(SELECTORS.gradeTotal(2)).text(), '120', 'Grade total updates with the new sum');
  });
});

andThen()2 番目のブロックに注意してくださいfocusout。コントロールに送信することで、バッキング コンポーネントのコードに、データを更新してサーバーに戻すように促す必要があります。他のブラウザはこれを行います - 私はconsole.log()それを確認するために Pretender レスポンダに入れました - しかし Safari はしません。focusoutイベントに適切に対応していないと思います。

このテストが、Ember CLI の更新のみが異なるブランチで合格したことを考えると、この問題を解決するために何が変更された可能性がありますか?

ETA: この更新で更新されたすべてのライブラリを個別にロールバックしましたが、テストは引き続き失敗します。機能しているように見える唯一の変更は、Ember 自体をロールバックすることです。1.11.1 と同じように 1.11.0 で壊れるので、変更は 1.10.0 と 1.11.0 の間です。(それは私にふるいにかけるために最大600のコミットを残すだけです...)

ETA2: 範囲を 1.11.0-beta.5 と 1.11.0 の間に狭めました。バウアー リンク使用して ember のローカル ビルドを使用しようとしていますが、テストの実行においてこれまでのところ ember ビルドは信頼できず、これら 2 つのタグの関係は効果的な bisecting につながるものではありません。

4

1 に答える 1