728x90

Automation 34

n8n

https://n8n.io/ n8n.io - a powerful workflow automation tooln8n is a free and source-available workflow automation tooln8n.io 요즘 핫한 툴로 Secure, AI-native workflow automation. The world's most popular workflow automation platform for technical teams라고한다.  여러 서비스들을 통합하여 workflow를 구성하여 자동화 하게끔 하는 고마운 툴인데 비싸다 https://www.youtube.com/watch?v=kdt5J2bpchM 개인적으로 이걸 보고 따라해서 hotsing을 했고, 잘 모르는 부분은 chatgpt를..

Appium, WebdriverIO

Appium (appium.io):모바일 애플리케이션 자동화 플랫폼iOS, Android 등 네이티브, 하이브리드, 모바일 웹 애플리케이션을 자동화서버로 작동하여, WebDriver 프로토콜을 통해 모바일 장치와 상호 작용WebdriverIO (webdriver.io):Node.js 기반의 테스트 자동화 프레임워크웹 애플리케이션과 모바일 애플리케이션의 테스트 스크립트를 작성하고 관리하는 데 사용클라이언트 라이브러리로서 Selenium WebDriver나 Appium 서버에 명령을 보내어 테스트를 실행WebdriverIO는 주 웹 애플리케이션을 테스트위한 용도이지만 Appium으로도 사용이 가능하며, appium 또는 selenium 서버 실행이 필요하다. webdriverIO를 서포트하는 Browsers..

Automation/Appium 2024.09.20

--grep @smoke

import { test, expect, Page } from '@playwright/test';test.describe('Login Page', () => { test('이메일 형태 미입력', async ({ page }: { page: Page }) => { await page.goto('/', { timeout: 120000 }); await page.getByPlaceholder('입력').fill('abcd'); await page.locator("[type=submit]").click(); // 로그인 에러 메시지 검증 await expect(page.getByText('이메일 형식을 확인해주세요.')).toBeVisible(); }); test('존재하지 않는..

자동화 고찰

그래도 나름 자동화랍시고 playwright 써서 github action과 slack까지 noti오도록 하면서 느낀 생각들을 좀 써본다. 1. POM을 하는 이유테스트 하려는 페이지들의 Element에 대한 접근이 빈번할 수록 하나의 변수 또는 객체로 또는 어디에 담아서 써야하는데, 결국 POM 만한게 없다. 구분하기도 갖다쓰기도 그만한게 없다. 2. Flaky Test자동화는 만능이 아닌 이유중에 하나, 동일한 조건에 실행했으나, 간헐적 성공 간헐적 실패로 이어지는 테스트로 이거 참 사람 좀 짜증나게 만드는 요소기는 함.여러가지 요소가 있을꺼같은데, '그때 네트워크가 느렸던가', '서버의 응답이 잠시 느렸다던가'.. 여튼? 이거 치우는 것도 일이다.말그대로 신뢰성에 대한 문제다 보니까 말이다. 그래..

Automation 2024.08.25

toHaveScreenshot

https://playwright.dev/docs/test-snapshots Visual comparisons | PlaywrightIntroductionplaywright.dev 보통 자동화를 작성할 때  1. 버튼을 누른다.2. 특정 InputField에 입력을 한다.3. 어떤 값 또는 Element가 나오는지 검증한다. 사실  보통 이런 순서일 텐데, 이러면 가끔 드는 생각은.. 보이기만 하면 Pass네.. CSS가 깨지든 말든, 혹은 Element에 id나 textId 등 attribute가 확실하지 않다면 어떤 위치에 나오든 상관없이 Pass가 되는 코드를 볼때마다 조금 답답하긴했었는데.. 스크린샷 하나 통짜 비교하면 편하긴 하겠다 ㅋㅋㅋ그게 진짜 있읍니다.... 미친거 아닌가 싶은데.. 심지어..

Fixtures

Fixtures는 테스트를 위한 환경을 설정 또는 테스트에 필요한 것을 제공하기 위해 해야 할 것들을 셋업(setup) 할때 사용.import { test as base, expect, Page } from '@playwright/test';export const test = base.extend({ loggedInPage: async ({ page }, use) => { // 테스트 전 해야 할 것 (Ex. login) await page.goto('/login', { waitUntil: 'networkidle', timeout: 120000 }); await page.waitForTimeout(6000); await page.getByPlaceh..

Playwright - Page Object Model

이전에 cypress에서 잠깐 소개했지만, 테스트 하려는 대상 (웹)을 페이지의 구분으로 테스트를 설계하는 패턴이다. https://playwright.dev/docs/pom Page object models | PlaywrightIntroductionplaywright.dev  간단하게 예를 들어 naver에 검색을 한다고 할 때,위에 폴더에 pages 에 home-page.ts를 생성한다. 당연히 네이버에 구성요소야 짱 많겠지만, 일딴 아래의 검색의 기준을 먼저 테스트 한다고 가정했을 때,   위에 두 버튼이 우선 필요할 것이다. typescript는 둘째 치고, home-page.ts 에서 해당 요소와 검색하려는 기능을 구현하고import type { Page, Locator } from '@pla..

Playwright

https://playwright.dev/ Fast and reliable end-to-end testing for modern web apps | PlaywrightCross-browser end-to-end testing for modern web appsplaywright.dev Microsoft에서 개발한 브라우져 테스트 및 웹 스크래핑을 위한 라이브러리https://npmtrends.com/cypress-vs-playwright npm trends에서 많이 올라왔는데, 개인적으로는 webkit 지원이 제일 크지않나 싶다.아직도 cypress는 webkit이 실험중이기도 하고... Launching Browsers | Cypress DocumentationWhen you run tests in C..

Cypress - github actions 2편

Chatgpt를 구워 삶아 설정한 github actions의 xml 파일  다시 Cypress를 쓰는 시간이 도래했다. Cypress Project를 설정 하면서 원했던 생각한 플로우는 다음과 같다. Slack에서 Command 봇으로 Github Actions를 트리거한다.Github Actions 에서 Chrome, Edge 최소한 2개 이상 브라우져에서 테스트를 한다.테스트 결과를 다시 Slack 으로 돌려 받는다.물론 Cypress Cloud 쓸경우 record 하면 더 편하긴한데.. 난 가난해 여튼 그래서 시작한 이틀간의 대장정? github actions의 workflow를 쓰자그리고 봇을 만들자 봇 그까잇거 대애충 만들어서 slack commands를 만들고, bolt.js를 쓰는데, 요 ..

Automation/Cypress 2024.06.19

Scroll

Appium에서 스크롤 액션을 하는 경우 Swipe를 쓰는 경우와, TouchAction 을 가져다 쓰는 방법 두가지가 있다.  1. TouchAction에서 Long_press 로 move_to를 이어서 사용하는 방법from appium.webdriver.common.touch_action import TouchActionactions = TouchAction(self.driver)actions.long_press(None,screenWidth/2,screenHeight*0.8).move_to(None,screenWidth/2,screenHeight*0.1).release().perform() 2. 간단하게 Swipe를 통해, 시작부터 끝의 좌표를 사용하여 Scroll하는 방법self.driver.sw..

Automation/Appium 2023.07.15
728x90