ウェブサイト検索

typescript - cypress のカバレッジは vue-property-decorator では動作しない

私はCypressでフロントエンドのコードカバレッジを取りたいです。現在、CypressはカバレッジのためにIstanbulを推奨しています。残念ながら、以下のスタックの組み合わせでは使用できません:

  • vue-property-decorator
  • サイプレス
  • イスタンブールのコードカバレッジ。
  • TypeScript。

理由: - istanbulをts-loaderで動かす方法が見つからなかった、なぜならistanbul-instrumenter-loaderは内部でbabelを使用しているから - babel-loaderはtypescriptと同じ方法でデコレーターをサポートしていないため、vue-property-decoratorが壊れる。vue-property-decoratorなしでTypeScriptでvueを使うのはあまりきれいではない…

こちらはいくつかの便利なリンクです:

javascript - ページオブジェクトで static を使用する(Cypress)

Cypressでe2eテストを実装するさまざまな例を見ていると、多くの人がstaticを使うのではなく、新しいオブジェクトを作成する方法を使っていることに気付きました。なぜ彼らはそうするのでしょうか? クラス自体のデータを変更せず、したがってthisにアクセスする必要がなく、同じページの複数のインスタンスを持つ必要もないのに、ページオブジェクトのメソッドにstaticを使わないのはなぜでしょうか(私にはその使用シナリオが思い浮かびません)。SeleniumはPage Factoryを使用するため、新しいオブジェクトを作成する必要があることは理解していますが、Cypressにはその類似物は見つかりません

続きを読む →

node.js - TypeScriptでCypressのカスタムコマンドからオブジェクトのリストを返す方法

私はエンドツーエンドの統合テストのためにCypressを使用しています。Cypressのカスタムコマンドからオブジェクトのリストを返すユースケースがあり、それを行うのに困難があります。こちらが私のコードのポイントです:

index.ts

declare global { namespace Cypress { interface Chainable<Subject> {

続きを読む →

javascript - TypeScriptでCypressを使ってインポートされた関数を監視する方法

Cypressで関数をスパイする場合、構文はcy.spy(object, method)ですが、オブジェクトには含まれていない他のファイルからインポートした関数をスパイしたいと考えています。これは可能ですか?

注:私は次の方法も試しましたが、うまくいかないようです。

//import { func } from 'src/file'; import * as funcObj from 'src/file'; describe('test', () => { it('test', () => { cy.spy(funcObj, 'func'); }) })

続きを読む →

TypeScript/CypressでインポートなしのグローバルEnum

私はCypressをカスタムコマンドとテストケースと一緒に使います。

ファイルにいくつかのグローバル列挙型を定義したい、例えば:

enum MyEnum{ A = "hello", B = "goodbye" }

今、この列挙型を次のようにインポートせずにすべてのファイルで使いたいです:

Cypress.Commands.add('testCommand', () => { let myEnum = MyEnum.A; })

または :

describe("example", () => { it("example", () => { let myEnum = MyEnum.A; }); });

続きを読む →

javascript - Cypressが間違った要素をターゲットにしているようです

idで要素を選択する際にcy.get()を使用し、その後.type()で入力すると、間違った要素に入力されてしまいます。これは私が書いたいくつかのテストで断続的に発生します。getは正しい要素を選択しているように見えますが、その後typeは別の要素に入力されます。

例: 要素が正しく選択されている 値が間違った要素に入力されている

ここでいくつかの方法を試してみました。cy.get('#elementid').clear().type('new text') は以前私が使っていた方法ですが、cy.get('#elementid').type('{selectall}new text') に変更しました。新しい方法ではこの問題が起こる頻度はかなり減りましたが、それでもまだ発生します。

例のス

続きを読む →

json - Protractor の browser.executeScript() 関数の Cypress における相当するものは何ですか?

私は現在、ProtractorのテストをCypressに変換しようとしています。Protractorのbrowser.executeScript()関数をCypressに変換しようとすると、いつも壁にぶつかってしまいます。

例えば、私は以下のようなProtractor関数を持っています。この関数は、もし this.button.click() が機能しない場合に備えて、ボタン要素をクリックします。

this.button = element(by.id(button)); clickExactButton(): promise.Promise<void> { return browser.executeScript( "arguments[0].click();", this.button ); }

この clickExactButton() 関数の Cypress 版をどう

続きを読む →

typescript - なぜ Cypress は更新されたコードではなく古いコードを実行しているのですか?

私は Cypress(8.0.0、8.7.0、7.7.0 を試しました)で、フォームを記入する簡単な E2E テストを書く作業をしています。

昨日、.click() を .click({ multiple: true }) に更新してから、それを削除しました。それ以来、テストに加えた変更に関係なく、実行されるコードは古いもののままです。

複数選択: true のクリックでエラーが発生します

私のテスト(「multiple」の出現はなし):

const moment = require('moment')

続きを読む →

javascript - Cypress JSで1つのメソッドで複数のページオブジェクトを使用する

1つのメソッドで複数のページオブジェクトを使うことについて、いくつか論理的に悩んでいます。そのようなロジックを使うアイデアが見つかりませんでした。例えば;

これらは、私のページオブジェクトusersTableの中のメソッドです;

get rolesAndStatusMenu() { return cy.get("#menu- > .MuiPaper-root > .MuiMenu-list>li"); } get usersPartialRow() { return cy.

続きを読む →

javascript - Cypress: ポップアップウィンドウが表示されるまで待つにはどうすればよいですか?

指定された時間なしで表示されるポップアップウィンドウについて、2つ質問があります:

  1. しばらくしてウェブサイトを開くと、ページの中央にフォームを含むポップアップウィンドウが表示されます。どうやって表示されるタイミングがわからなくても、cy.get() でその要素を取得できますか。

  2. そして、他のテストを実行するとき、フォーム要素が表示されるのを非同期に待って閉じるにはどうすればよいですか(閉じるボタンがあります)

続きを読む →