-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[CI] Cypressがfailになる #13605
Comments
https://github.com/misskey-dev/misskey/blob/develop/cypress/support/commands.ts#L33-L35 https://developer.mozilla.org/ja/docs/Web/API/IDBFactory/deleteDatabase に記載のある |
以下推測 直近では #13591 にて上記箇所の修正が施されているが、これは直接的な原因ではないと考える。 cy.window(win => {
win.indexedDB.deleteDatabase('keyval-store');
}) のような実装になっていたが、cy.window()にはラムダを引数に取る機能は存在しておらず、ただcy.window()を呼び出していただけだった。TypeScript化されたことにより正しく呼び出せていないことが表面化し(型エラーで)、現在の形に修正されたことで表出したのではないかと推測。 ただ…13591でもコメントされている通り、上手く行ったパターンもあるとのこと… |
@dakkar you said that it still worked when you tested it locally, correct? |
it did, yes |
but I may have tested before "fixing" the call to |
you're all correct, "fixing" the call to just delete the lines cy.window().then(win => {
win.indexedDB.deleteDatabase('keyval-store');
}); from Apologies for breaking your build! |
@dakkar that's not a good thing. that's what resets the client's IndexedDB between tests, so it can have a fresh start. another fix needs to be found. i'll see what i can do. |
well, the code before we "fixed" it, was passing a lambda to the apparently the tests actually rely on that? |
hmmm... then i guess deleting the lines would do it |
i don't get it... because the way we did it is exactly how we're supposed to do it... |
related: cypress-io/cypress#1208 |
とりあえずidb-proxyでlocalStorageを強制するのはどうかしら |
Maybe... that could work. |
この注は数多くのweb APIがweb worker内で使えないのに対して、このAPIが(比較的)例外的に使えるAPIであることを示しているだけで非web worker内で使えないという話ではないと思います。 |
少し調査してみたところ、chromeのバグに起因してる可能性がありそうでした。 まず現状の動作を確認したところ、なぜか また、firefox環境ではcypressが問題なく通ることも確認したため、chrome固有の動作であろうことがわかりました。 そして、おそらくcypressは これを確認するために、以下のようなhtmlファイルを作成し、これをhttp経由でchromeで開いたところ、 <!doctype html>
<iframe></iframe>
<script>
const search = new URLSearchParams(location.search);
if (search.has("inner")) {
// this is the inner iframe
} else {
// this is the outer iframe
const iframe = document.querySelector("iframe");
iframe.src = location.href + "?inner";
const innerWindow = iframe.contentWindow;
const request = innerWindow.indexedDB.deleteDatabase("test-db");
request.onsuccess = () => {
console.log("Database deleted");
};
request.onerror = () => {
console.error("Error deleting database");
};
request.onblocked = () => {
console.error("Blocked deleting database");
};
request.onupgradeneeded = () => {
console.error("Upgrade needed deleting database");
};
console.log(request);
}
</script> Footnotes
|
これChromiumのバグトラッカーないかしら(前から気になってはいた |
https://issues.chromium.org/issues?q=indexedDB%20deleteDatabase https://issues.chromium.org/issues?q=indexedDB%20iframe で調べた感じ、https://issues.chromium.org/issues/40827490 が関係あるかもしれないくらいでそのものっぽいのは見当たらなかった |
💡 Summary
Cypressのテストが正常に動作しなくなっている模様。
CypressのUIを起動した状態で動きを見てみると、最初のLoading画面でフリーズしたままタイムアウトしている。
🥰 Expected Behavior
passする
🤬 Actual Behavior
failになる
📝 Steps to Reproduce
cypressで作られた任意のテストを起動
💻 Frontend Environment
-
🛰 Backend Environment (for server admin)
-
Do you want to address this bug yourself?
The text was updated successfully, but these errors were encountered: