TypeScript

PlayWrightのDEBUGモード

version "@playwright/test": "^1.34.0" 起こったこと Playwrightで特定のブラウザだけおかしい挙動しているように見えた。 まずはそれが事実か確認するために、そのブラウザでの動きを確認したい。 デバッグモードの起動方法 playwright.dev デバッグモード…

PlayWrightにisMobileがあった

Version情報 "@playwright/test": "^1.34.0" "parcel-bundler": "^1.12.5", "typescript": "^5.0.4" 起こったこと PCとスマホで要素が異なるサイトをE2Eテストしたい。 PlayWrightでスマホ版を動かさないといけない。 そんな中、PlayWrightのテスト内パラメ…

ChatGPTにお願いして、objectをフラットにする関数を作ってもらった

起こったこと ネストされたobjectを1階層までにフラット化する関数を書きたいと考えた。 例えば以下のようなobject1をobject2にするような感じである。 const object1 = { key1: value1, key2: { key2-1: value2-1, key2-2: value2-2 } }; const object2 = f…

typescriptのObjectのKeyを繰り返したくない。

起こったこと 以下のDataMapのようなオブジェクトを作るとして、Keyがkey1,key2,key3と繰り返し記載しているのがよろしくない。(①のパターン) keyをstringとする場合、key1,key2,key3以外のプロパティ名を持つことが出来てしまい、よろしくない(②のパター…

PlayWrightでブラウザのログを取りたい

起こったこと ブラウザのconsole.xxx系で出力されるログをPlayWrightで検知したい on consoleを使う 以下のようにconsoleイベントをトリガーにコールバック関数を実行することが出来る。ただし、これはコンソールイベントが発火する前に設定しないといけない…

AWS LambdaでPlayWright(chromium)を動かした

起こったこと 特定のサイトのスクショを取りたい。WebAPIで叩いて動くAWS Lambda上でPlayWrightを起動し、スクショを取って返却するようにした。 これを実装するには結構な時間がかかったので共有したくなった。 ただし、実行速度が遅い。 正しくは値を返却…

GASのdoGet,doPostの型は型宣言ファイルはどこにあるの

起こったこと gasを作る。claspから作ろうと思ったので以下をインストールした。 npm i -D @types/google-apps-script しかし、doGetのタイプがどこにあるのかがよくわからなかった。 GoogleAppsScript.Events.DoGet GoogleAppsScript.Events.DoGetとGoogleA…

Playwrightで遷移先ページのタイトルを評価しようとしたら成功したり失敗したりした

起こったこと Playwrightで遷移先ページのタイトルを評価しようとしたら成功したり失敗したりとフレイキーなテストになってしまった。 Version "@playwright/test": "^1.28.1" コード 対象HTML <html lang="ja"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>test</title> </head> <body> <main> </main></body></html>

Playwrightでチェックボックスのチェックがついているラベルを取りたい

version "@playwright/test": "^1.22.2" 起こったこと Playwrightでチェックボックスのチェックがついているラベルの値を取りたい。 以下の画像なら["チェックボックス1", "チェックボックス2"]といった値。 <form> <div> <input type="checkbox" id="checkbox1" checked> <label for="checkbox1">チェックボックス1</label> </div> <div> <input type="checkbox" id="checkbox2" checked> </div></form>

jestでCannot find module 'nock/types' from '****.ts'と出た

Version情報 { "jest": "^29.0.3", "nock": "^13.2.9", } 起こったこと jest上でimport nock from "nock/type";を行っていた時、Cannot find module 'nock/types' from '****.ts'と出た。 jestのsetup上では読み込めていたのに、*.test.ts上では上記のエラー…

TypeormからHerokuのPostgressに繋ぐときに色々と詰まったところ

Version情報 おおよそ2022年9月ごろ時点のお話 "pg": "^8.8.0", "typeorm": "^0.3.9" heroku/7.63.0 wsl-x64 node-v14.19.0 error no pg_hba.conf entry for host どういうタイミングで出力されていたかは定かじゃないが、error no pg_hba.conf entry for ho…

JSのモーダル(prompt)に入力したい

Version情報 "typescript": "^4.7.4" "@playwright/test": "^1.22.2" 起こったこと 特定のものを削除する際によく出る「deleteと入力してください」のあれをE2Eテストしようとしたらなんかうまくいかなかった。 こんな感じ <main> <div> <p id="test-text">この文字が邪魔なので消したい</p> <button id="delete"></button></div></main>…

動的なページをpage.$でDOMを取ろうとするとうまくいったりいかなかったりした

version情報 Ubuntu: 20.04 "@playwright/test": "1.22.2" node: v16.15.1 起こったこと 動的なHTML要素をpage.$(QUERY)でとろうとしたら、Chromiumだけエラーになったりした。 <div id="add"> </div> const add = document.querySelector("#add") as HTMLDivElement; setTimeou…

page.locator(`text="foobar"`)だと取れなかったところ

version情報 "@playwright/test": "1.22.2" 起こったこと こういったインライン要素が入った文字を完全一致で取得できなかった。 <p id="foobar">foo<strong>bar</strong></p> await page.click(`text="foobar"`) /** *Timeout of 30000ms exceeded. page.click: Target closed =================…