Skip to content
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

[GGFE-99] game 테스트 코드 수정 #874

85 changes: 45 additions & 40 deletions cypress/e2e/game.cy.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
export {};

describe('게임 기능 테스트', () => {
before(() => {
beforeEach(() => {
cy.login(Cypress.env('NORMAL_USERNAME'), Cypress.env('NORMAL_PASSWORD'));
});
beforeEach(() => {
Expand All @@ -13,29 +13,31 @@ describe('게임 기능 테스트', () => {
cy.origin(Cypress.env('HOME'), () => {
cy.wait(1000);
// 1. 게임 컴포넌트 랜더링 확인
cy.get('[class^=GameResultItem]').then((gameResultItem) => {
const gameComponentRegex =
'[class^="GameResultItem"][class*="ItemContainer"]';
cy.get(gameComponentRegex).then(() => {
// 2. big 컴포넌트와 small 컴포넌트 갯수 확인
cy.get('[class^=GameResultItem]')
.filter('[class^=GameResultItem_bigContainer]')
cy.get(gameComponentRegex)
.filter('[class^=GameResultItem_bigItemContainer]')
.should('have.length', 1);

cy.get('[class^=GameResultItem]')
.filter('[class^=GameResultItem_smallContainer]')
cy.get(gameComponentRegex)
.filter('[class^=GameResultItem_smallItemContainer]')
.should('have.length', 2);

// 3. 첫번째 컴포넌트가 big인지 확인
cy.get('[class^=GameResultItem')
cy.get(gameComponentRegex)
.first()
.invoke('attr', 'class')
.then((className) => {
expect(className).to.include('big');
});
// 4. 첫번째 small 컴포넌트 클릭
cy.get('[class^=GameResultItem_smallContainer]').first().click();
cy.get('[class^=GameResultItem_smallItemContainer]').first().click();
// wait for rendering
cy.wait(1000);
// 5. 첫번째 Container 컴포넌트가 small인지 확인
cy.get('[class^=GameResultItem')
cy.get(gameComponentRegex)
.first()
.invoke('attr', 'class')
.then((className) => {
Expand All @@ -47,35 +49,36 @@ describe('게임 기능 테스트', () => {
it('게임 페이지 이동 및 컴포넌트 렌더링 확인 🤔', () => {
cy.origin(Cypress.env('HOME'), () => {
//1. 게임 페이지 이동
cy.get('a').filter("[href='/game']").click();
cy.contains('Current Play').parent().find('button').click();
// wait for rendering
cy.wait(1000);
// 2. 게임 컴포넌트 랜더링 확인
cy.get('input[value="더 보기"]').click();
cy.get('button[class*="getButton"]').click();
// wait for rendering
cy.wait(1000);
cy.get('div[class*="smallContainer"]').each(($el1) => {
cy.get('div[class*="smallItemContainer"]').each(($el1) => {
cy.wrap($el1).click();
});
// 3. 노말 게임으로 변경 및 컴포넌트 렌더링 확인
cy.get('input[type="radio"][value="normal"]')
cy.get('input[type="radio"][value="NORMAL"]')
.as('normalRadioBtn')
.click()
.then(() => {
cy.wait(1000);
cy.get('div[class*="smallContainer"]').each(($el2) => {
cy.get('div[class*="smallItemContainer"]').each(($el2) => {
cy.wrap($el2).click();
});
});
// wait for rendering
cy.wait(1000);
// NOTE : 새로운 시즌이 시작된 경우에는 컴포넌트가 없는게 정상입니다.
// 4. 랭크 게임으로 변경 및 컴포넌트 렌더링 확인
cy.get('input[type="radio"][value="rank"]')
cy.get('input[type="radio"][value="RANK"]')
.as('rankRadioBtn')
.click()
.then(() => {
cy.wait(1000);
cy.get('div[class*="smallContainer"]').each(($el3) => {
cy.get('div[class*="smallItemContainer"]').each(($el3) => {
cy.wrap($el3).click();
});
});
Expand All @@ -84,7 +87,7 @@ describe('게임 기능 테스트', () => {
it('유저 검색 확인 🤔', () => {
cy.origin(Cypress.env('HOME'), () => {
// 1. 게임 페이지 이동
cy.get('a').filter("[href='/game']").click();
cy.contains('Current Play').parent().find('button').click();
// wait for rendering
cy.wait(1000);
// 2. 가장 최근 경기한 유저 아이디 검색
Expand All @@ -101,13 +104,13 @@ describe('게임 기능 테스트', () => {
// wait for rendering
cy.wait(1000);
// 3. 모든 작은 게임 컴포넌트에 유저 아이디가 일치하는지 확인
cy.get('[class^=GameResultItem_smallContainer]').each(
cy.get('[class^=GameResultItem_smallItemContainer]').each(
($smallContainer) => {
const $smallTeams = $smallContainer.find(
'[class^=GameResultItem_smallTeam]'
);
const intraId1 = $smallTeams.eq(0).find('span div').text();
const intraId2 = $smallTeams.eq(1).find('span div').text();
const intraId1 = $smallTeams.eq(0).find('span').text();
const intraId2 = $smallTeams.eq(1).find('span').text();

if (intraId1 === userId || intraId2 === userId) {
return;
Expand All @@ -123,38 +126,40 @@ describe('게임 기능 테스트', () => {
// 1. live 상태 컴포넌트 랜더링 확인
cy.origin(Cypress.env('HOME'), () => {
let gameId = '';
cy.get('[class^=GameResultItem_bigContainer]').each(($bigContainer) => {
const $bigScore = $bigContainer.find(
'[class^=GameResultItem_bigScore]'
);
const $status = $bigScore.find('[class^=GameResultItem_gameStatus]');
cy.get('[class^=GameResultItem_bigItemContainer]').each(
($bigContainer) => {
const $bigScore = $bigContainer.find(
'[class^=GameResultItem_bigScore]'
);
const $status = $bigScore.find('[class^=GameResultItem_gameStatus]');

// 첫번째 컴포넌트 live 상태인지 확인 및 맞으면 저장
if (
$status.hasClass('GameResultItem_gameStatusWait') ||
($status.text() && $status.text() === 'LIVE')
) {
cy.wrap($bigContainer)
.invoke('attr', 'id')
.then((id) => {
gameId = String(id);
});
// 첫번째 컴포넌트 live 상태인지 확인 및 맞으면 저장
if (
$status.hasClass('GameResultItem_gameStatusWait') ||
($status.text() && $status.text() === 'LIVE')
) {
cy.wrap($bigContainer)
.invoke('attr', 'id')
.then((id) => {
gameId = String(id);
});
}
}
});
cy.get('a').filter("[href='/game']").click();
);
cy.contains('Current Play').parent().find('button').click();
// Wait for rendering
cy.wait(2000);
cy.get('[class^=GameResultItem_bigContainer]')
cy.get('[class^=GameResultItem_bigItemContainer]')
.invoke('attr', 'id')
.then((id) => {
if (gameId === id) {
throw new Error('live 상태가 있습니다');
}
});
cy.get('div[class*="smallContainer"]').each(($el1) => {
cy.get('div[class*="smallItemContainer"]').each(($el1) => {
cy.wrap($el1).click();
cy.wait(1000);
cy.get('[class^=GameResultItem_bigContainer]')
cy.get('[class^=GameResultItem_bigItemContainer]')
.invoke('attr', 'id')
.then((id) => {
if (gameId === id) {
Expand Down
15 changes: 8 additions & 7 deletions cypress/e2e/match.cy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,19 @@ describe('매치 기능 테스트', () => {
cy.login(Cypress.env('NORMAL_USERNAME'), Cypress.env('NORMAL_PASSWORD'));
cy.origin(Cypress.env('HOME'), () => {
// 매치 버튼 눌러 매치 페이지로
cy.get('a').filter('[class^=Layout_matchingButton]').click();
// 토글 눌러서 일반전으로 변경
cy.get('[class^=StyledButton_button]').click();
// 일반전으로 이동
cy.wait(1000);
cy.get('[class^=ModeToggle_toggleButton]').click();
cy.get('span[class^=ModeToggle_toggleText]').should('have.text', '일반');
cy.get('[class^=ModeRadiobox_normal]').click();
cy.wait(1000);
// 두번째로 가능한 슬롯 잡기
cy.register(1, '1/2');
});
// 첫번째로 가능한 슬롯 잡기
cy.register(0, '1/2');
cy.origin(Cypress.env('HOME'), () => {
// TODO : alert 확인
// 위 현재 매치 정보 확인, 취소 버튼 뜨는지 확인
cy.wait(3000);
cy.get('[class^=CurrentMatchInfo_container]').should('exist');
cy.get('[class^=CurrentMatchInfo_currentMatchContent]').should('exist');
cy.get('[class^=CurrentMatchInfo_cancelButton]').should('exist');
});
cy.logout(Cypress.env('NORMAL_USERNAME'));
Expand Down
24 changes: 13 additions & 11 deletions cypress/support/commands.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,19 +61,21 @@ Cypress.Commands.add('logout', (username: string) => {

// target 표시의 슬롯 중 flag 번째의 슬롯을 등록하는 command
Cypress.Commands.add('register', (flag: number, target: '+' | '1/2') => {
let count = 0;
cy.get('[class*=MatchSlot_plus]').each(($el4) => {
if ($el4.text() === target) {
if (flag != count) {
count++;
return;
cy.origin(Cypress.env('HOME'), () => {
let count = 0;
cy.get('[class*=MatchSlot_plus]').each(($el4) => {
if ($el4.text() === target) {
if (flag != count) {
count++;
return;
}
cy.wrap($el4).click();
return false;
}
cy.wrap($el4).click();
return false;
}
});
cy.wait(1000);
cy.get('input[value=확인]').click();
});
cy.wait(1000);
cy.get('input[value=확인]').click();
});

// 경기 결과 입력 테스트 command (success: true => 의도한 성공, false => 의도한 실패)
Expand Down