diff --git a/cypress/e2e/language.cy.js b/cypress/e2e/language.cy.js new file mode 100644 index 0000000000..8b6a95f762 --- /dev/null +++ b/cypress/e2e/language.cy.js @@ -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("欢迎!"); + }); +});