test(e2e): ブラウザの言語設定によってmisskeyの表示する言語をを変更するテストを追加

This commit is contained in:
mochi33i 2023-02-26 16:56:52 +09:00
parent 18dbcfa0b0
commit 39c1c89253
2 changed files with 110 additions and 1 deletions

View File

@ -107,7 +107,6 @@ describe('After user signup', () => {
cy.get('[data-cy-signin-username] input').type('alice');
cy.get('[data-cy-signin-password] input').type('alice1234{enter}');
// TODO: cypressにブラウザの言語指定できる機能が実装され次第英語のみテストするようにする
cy.contains(/アカウントが凍結されています|This account has been suspended due to/gi);
});
});

110
cypress/e2e/language.cy.js Normal file
View File

@ -0,0 +1,110 @@
describe('Change the language to Japanese', () => {
beforeEach(() => {
cy.resetState();
cy.visit("/", {
onBeforeLoad(window) {
Object.defineProperty(window.navigator, 'language', { value: 'ja-JP' })
Object.defineProperty(window.navigator, 'languages', { value: ['ja'] })
Object.defineProperty(window.navigator, 'accept_languages', { value: ['ja'] })
},
headers: {
'Accept-Language': 'ja'
}
})
// インスタンス初期セットアップ
cy.registerUser('admin', 'pass', true);
// ユーザー作成
cy.registerUser('alice', 'alice1234');
cy.login('alice', 'alice1234');
});
afterEach(() => {
// テスト終了直前にページ遷移するようなテストケース(例えばアカウント作成)だと、たぶんCypressのバグでブラウザの内容が次のテストケースに引き継がれてしまう(例えばアカウントが作成し終わった段階からテストが始まる)。
// waitを入れることでそれを防止できる
cy.wait(1000);
});
it('display language is english', () => {
cy.get('html').should('have.attr', 'lang', 'ja-JP');
cy.contains("ようこそ");
});
});
describe('Change the language to English', () => {
beforeEach(() => {
cy.resetState();
cy.visit("/", {
onBeforeLoad(window) {
Object.defineProperty(window.navigator, 'language', { value: 'en-US' })
Object.defineProperty(window.navigator, 'languages', { value: ['en'] })
Object.defineProperty(window.navigator, 'accept_languages', { value: ['en'] })
},
headers: {
'Accept-Language': 'en'
}
})
// インスタンス初期セットアップ
cy.registerUser('admin', 'pass', true);
// ユーザー作成
cy.registerUser('alice', 'alice1234');
cy.login('alice', 'alice1234');
});
afterEach(() => {
// テスト終了直前にページ遷移するようなテストケース(例えばアカウント作成)だと、たぶんCypressのバグでブラウザの内容が次のテストケースに引き継がれてしまう(例えばアカウントが作成し終わった段階からテストが始まる)。
// waitを入れることでそれを防止できる
cy.wait(1000);
});
it('display language is english', () => {
cy.get('html').should('have.attr', 'lang', 'en-US');
cy.contains("Welcome!");
});
});
describe('Change the language to Chinese', () => {
beforeEach(() => {
cy.resetState();
cy.visit("/", {
onBeforeLoad(window) {
Object.defineProperty(window.navigator, 'language', { value: 'zh' })
Object.defineProperty(window.navigator, 'languages', { value: ['zh'] })
Object.defineProperty(window.navigator, 'accept_languages', { value: ['zh'] })
},
headers: {
'Accept-Language': 'zh'
}
})
// インスタンス初期セットアップ
cy.registerUser('admin', 'pass', true);
// ユーザー作成
cy.registerUser('alice', 'alice1234');
cy.login('alice', 'alice1234');
});
afterEach(() => {
// テスト終了直前にページ遷移するようなテストケース(例えばアカウント作成)だと、たぶんCypressのバグでブラウザの内容が次のテストケースに引き継がれてしまう(例えばアカウントが作成し終わった段階からテストが始まる)。
// waitを入れることでそれを防止できる
cy.wait(1000);
});
it('display language is english', () => {
cy.get('html').should('have.attr', 'lang', 'zh-CN');
cy.contains("欢迎!");
});
});