Step에서 액션 선택 영역을 클릭하면 선택 가능한 액션을 확인할 수 있습니다.

Motion #
스마트폰 조작에 사용하는 기본 동작들입니다.
Touch #
UIObject를 터치하는 동작입니다.

Attributes
- UIObject: 터치할 UIObject
- type: 터치 방식
- Single: 한 번 터치
- Double: 두 번 터치
- Long: 길게 터치
- duration: 터치 유지 시간 (기본값 : 3,000ms, 범위: 1,000~5,000ms)
- N Times: 반복 터치
- count: 터치 횟수 (기본값: 2번, 범위: 1~100번)
- interval: 각 터치 사이 대기 시간 (기본값: 1,000ms, 범위: 500~5,000ms)
Swipe #
화면을 좌우로 밀어넘기는 동작입니다.

Attributes
- UIObject: 스와이프할 영역
- area: 스와이프 범위 (기본값: 60%, 범위: 1~100%)
- direction: 스와이프 방향 (기본값: LEFT, 옵션: LEFT/RIGHT)
- duration: 스와이프 실행 시간 (기본값: 2,500ms, 범위: 100~5,000ms)
Scroll #
위아래로 스크롤하는 동작입니다.
스크롤 시작 위치에 버튼, 메뉴 등 터치 가능한 요소가 있으면 스크롤이 작동하지 않을 수 있습니다.

Attributes
- UIObject: 스크롤할 UIObject
- area: 스크롤 범위 (기본값: 60%, 범위: 1~100%)
- direction: 스크롤 방향 (기본값: DOWN, 옵션: DOWN/UP/BOTTOM/TOP)
- DOWN/UP: 일반 스크롤
- BOTTOM/TOP: 끝까지 스크롤
- duration: 스크롤 실행 시간 (기본값: 2,500ms, 범위: 100~5,000ms)
- limit (BOTTOM/TOP 전용): 끝까지 스크롤 시 제한 시간 (기본값: 10,000ms, 범위: 5,000~600,000ms)
Drag #
시작 UIObject에서 끝 UIObject로 드래그하는 동작입니다. 날짜나 시간 설정 화면에서 주로 사용됩니다.


Attributes
- start UIObject: 드래그를 시작할 UIObject
- end UIObject: 드래그를 끝낼 UIObject
- press duration: 드래그 시작 전 길게 누르기 시간 (기본값: 0ms, 범위: 0~5,000ms)
- drag duration: 드래그 실행 시간 (기본값: 2,500ms, 범위: 500~5,000ms)
Pinch #
화면을 확대하거나 축소하는 동작입니다.

Attributes
- UIObject: 핀치를 실행할 UIObject
- action area: 핀치 범위 (기본값: 60%, 범위: 50~100%)
- direction: 핀치 방향 (기본값: IN, 옵션: IN/OUT)
- IN: 축소 (Zoom Out)
- OUT: 확대 (Zoom In)
- duration: 핀치 실행 시간 (기본값: 2,500ms, 범위: 1,000~5,000ms)
Input #
키보드로 텍스트를 입력하는 동작입니다. 입력 필드를 터치해 키보드를 활성화한 후 Full Screen으로 UIObject를 설정하고 사용할 수 있습니다.

Attributes
- UIObject: 텍스트를 입력할 UIObject (키보드가 노출된 Full Screen 사용)
- value: 입력할 텍스트 (직접 입력 또는 ${key} 형식의 User Variable 사용)
Secure Keyboard #
보안키보드로 텍스트를 입력하는 동작입니다. 보안키보드를 활성화한 후 Full Screen으로 UIObject를 설정하고 사용할 수 있습니다.

Attributes
- UIObject: 보안 키보드 UIObject
- value: 보안 키보드에 입력할 값
- typename: 보안 키보드 종류 (AI가 자동 인식)
- interval: 키 입력 간격 (기본값: 1,000ms, 범위: 500~5,000ms)
Event #
디바이스와 앱을 제어하는 동작들입니다.
Rotate #
디바이스 화면 방향을 변경하는 동작입니다.

Attributes
- orientation: 화면 방향 (기본값: PORTRAIT, 옵션: PORTRAIT/LANDSCAPE)
- PORTRAIT: 세로
- LANDSCAPE: 가로
Wait #
다음 Step 실행 전까지 설정한 시간만큼 대기합니다.

Attributes
- value: 대기 시간 (기본값: 2,000ms, 범위: 500~600,000ms)
Launch #
앱을 실행하거나 브라우저로 URL에 접속할 수 있습니다.


Attributes
- type: 실행 방식 (옵션: APP/BROWSER)
- APP:
- Package Name: 실행할 Android 앱의 Package Name
- Bundle ID: 실행할 iOS 앱의 Bundle ID
- BROWSER:
- URL: 접속할 웹사이트 주소
- Android: Android에서 사용할 브라우저 앱
- iOS: iOS에서 사용할 브라우저 앱
앱 ID 확인 방법은 Stego 사용 가이드 > 5.0. 디바이스 조작 기능에서 확인할 수 있습니다.
Terminate #
실행 중인 앱을 종료합니다.

Attributes
- Package Name: 종료할 Android 앱의 Package Name
- Bundle ID: 종료할 iOS 앱의 Bundle ID
Activate #
뒤에서 실행 중인 앱을 화면에 표시합니다.

Attributes
- Package Name: 활성화할 Android 앱의 Package Name
- Bundle ID: 활성화할 iOS 앱의 Bundle ID
Home #
디바이스의 홈 화면으로 이동합니다.
Lock #
디바이스를 잠금 상태로 변경합니다.
Unlock #
디바이스 잠금을 해제합니다.
Wake Up #
장치가 슬립 상태일 때 슬립 모드를 해제합니다.
Keycode #
Android 기기에 다양한 키 명령을 보내는 동작입니다. Android 기기 연결 시에만 사용할 수 있습니다.

Attributes
- value: 입력할 Keycode 값 (직접 입력 또는 기본값 선택)
- 예시: Back(4), Enter(66), Del(67), AppSwitch(187)
- count: 실행 횟수 (기본값: 1회, 범위: 1~100회)
- interval: 실행 간격 (기본값: 1,000ms, 범위: 500~5,000ms)
Variable #
테스트 중 데이터를 저장하거나 값을 생성하는 기능입니다.
Store Value #
특정 값을 미리 저장할 수 있습니다.

Attributes
- key: 저장할 값의 이름
- value: 저장할 값
Store Content #
화면의 특정 위치에 있는 문자열을 읽어서 저장할 수 있습니다.

Attributes
- UIObject: 텍스트를 읽을 UIObject
- key: 저장할 값의 이름
- type: 저장 방식 (옵션: String/Number)
- String: 문자열 그대로 저장
- Number: 숫자만 저장
- pattern: 정규표현식 사용 가능 (예:
(?<=:)\d+
)
Store Random Number #
0~100 사이의 무작위 숫자를 저장합니다.

Attributes
- key: 저장할 값의 이름
Store Random Text #
영문 소문자(a-z), 영문 대문자(A-Z), 숫자 0-9 중 무작위 문자를 저장합니다.

Attributes
- key: 저장할 값의 이름
- prefix: 텍스트 앞부분에 추가할 고정 값 (선택사항)
- number of characters: 생성할 문자 수 (기본값: 3, 범위: 1~10)
Control #
조건 분기나 반복 실행 등 시나리오 흐름을 제어할 수 있습니다.
If UIObject #
설정한 UIObject가 화면에 존재하는지 확인해서 자식 Step을 실행합니다.


Attributes
- UIObject: 존재 여부를 확인할 UIObject
- wait timeout: 최대 대기 시간 (기본값: 0ms, 범위: 0~600,000ms)
- comparator: 실행 조건 (옵션: EXISTS/NOT EXISTS)
- EXISTS: UIObject가 존재하면 자식 스텝 실행
- NOT EXISTS: UIObject가 없으면 자식 스텝 실행
If Content #
화면 요소 내부의 텍스트 내용을 비교해서 자식 Step을 실행합니다.


Attributes
- UIObject: 텍스트를 비교할 UIObject
- wait timeout: 최대 대기 시간 (기본값: 0ms, 범위: 0~600,000ms)
- comparator: 비교 조건
- =: 텍스트가 같으면 실행
- !=: 텍스트가 다르면 실행
- >, >=, <, <=: 숫자 비교
- match: 정규표현식 전체 일치
- search: 정규표현식 부분 검색
- color: UIObject의 중앙 색상 일치 (RGB 유사도 90% 이상)
- value: 비교할 값 (직접 입력 또는 ${key} 형식의 User Variable 사용)
- comparator가 color인 경우:
- color: Hex color code (예:
#BABABA
) - threshold: 색상 유사도 기준 (기본값: 0.9)
- color: Hex color code (예:
- comparator가 color인 경우:
If Value #
이전에 저장한 값과 비교해서 자식 Step을 실행합니다.

Attributes
- key: 비교할 값의 이름
- comparator: 비교 조건
- =: 텍스트가 같으면 실행
- !=: 텍스트가 다르면 실행
- >, >=, <, <=: 숫자 비교
- match: 정규표현식 전체 일치
- search: 정규표현식 부분 검색
- value: 비교할 값 (직접 입력 또는 ${key} 형식의 User Variable 사용)
If Changed #
이전 Step 실행 전과 현재 화면을 비교해서 변화가 있으면 자식 Step을 실행합니다. 토스트 팝업이나 동영상 재생 여부 확인에 사용할 수 있습니다.

Attributes
- UIObject: 변화를 감지할 UIObject
- threshold: 변화 감지 기준 (기본값: 10%, 범위: 1~100%)
- wait timeout: 최대 대기 시간 (기본값: 5,000ms, 범위: 3,000~10,000ms)
If Role #
D2D 테스트에서 특정 디바이스에서만 실행할 Step을 지정합니다. Scenario Settings에서 정의한 디바이스 역할에 따라 실행됩니다.

Attributes
- role: 하위 Step을 실행할 디바이스 역할 (최대 4개)
자세한 사용법은 Stego 사용 가이드 > 10.0. 시나리오 예제에서 확인할 수 있습니다.
Loop UIObject #
UIObject의 존재 여부에 따라 자식 Step을 반복 실행합니다. 리스트에서 원하는 항목이 나올 때까지 스크롤할 때 사용할 수 있습니다.

Attributes
- UIObject: 존재 여부를 확인할 UIObject
- comparator: 반복 조건 (옵션: EXISTS/NOT EXISTS)
- EXISTS: 화면 요소가 존재하면 반복
- NOT EXISTS: 화면 요소가 없으면 반복
- limit: 최대 반복 횟수 (기본값: 5회, 범위: 1~1,000회)
Loop NTimes #
자식 Step을 정해진 횟수만큼 반복 실행합니다.

Attributes
- limit: 반복 횟수 (기본값: 5회, 범위: 1~1,000회)
Loop Content #
화면의 특정 위치에 있는 문자를 읽어서 지정한 값과 비교해서 반복 여부를 결정합니다.

Attributes
- UIObject: 문자열을 읽을 UIObject
- comparator: 비교 조건
- =: 텍스트가 같으면 실행
- !=: 텍스트가 다르면 실행
- >, >=, <, <=: 숫자 비교
- match: 정규표현식 전체 일치
- search: 정규표현식 부분 검색
- color: UIObject의 중앙 색상 일치 (RGB 유사도 90% 이상)
- value: 비교할 값 (직접 입력 또는 ${key} 형식의 User Variable 사용)
- comparator가 color인 경우:
- color: Hex color code (예:
#BABABA
) - threshold: 색상 유사도 기준 (기본값: 0.9)
- color: Hex color code (예:
- comparator가 color인 경우:
- limit: 반복 횟수 (기본값: 5회, 범위: 1~1,000회)
Loop Value #
이전에 저장한 값과 비교해서 자식 Step을 반복 실행합니다.

Attributes
- key: 비교할 값의 이름
- comparator: 비교 조건
- =: 텍스트가 같으면 실행
- !=: 텍스트가 다르면 실행
- >, >=, <, <=: 숫자 비교
- match: 정규표현식 전체 일치
- search: 정규표현식 부분 검색
- value: 비교할 값 (직접 입력 또는 ${key} 형식의 User Variable 사용)
- limit: 반복 횟수 (기본값: 5회, 범위: 1~1,000회)
Wait For #
설정한 화면 요소가 나타나거나 사라질 때까지 대기합니다. 로딩 시간이 불규칙적인 경우 테스트 시간을 단축할 수 있습니다.

Attributes
- UIObject: 대기할 UIObject
- wait timeout: 최대 대기 시간 (기본값: 5,000ms, 범위: 1,000~600,000ms)
- until: 대기 조건 (옵션: EXISTS/NOT EXISTS)
- EXISTS: 화면 요소가 나타날 때까지 대기
- NOT EXISTS: 화면 요소가 사라질 때까지 대기
Assertion #
테스트 결과를 검증하는 동작들입니다.
Assert UIObject #
지정한 화면 요소가 존재하는지 검사합니다.

Attributes
- UIObject: 검사할 UIObject
- wait timeout: 최대 대기 시간 (기본값: 0ms, 범위: 0~600,000ms)
- comparator: 검사 조건 (옵션: EXISTS/NOT EXISTS)
- EXISTS: UIObject가 존재하면 성공
- NOT EXISTS : UIObject가 없으면 성공
- custom message: 검사 결과로 표시할 메시지
- label: 라벨 값 (최대 10개, Assertion 실패 시 Ptero의 Label에 추가)
- type: 실패 시 처리 방식 (옵션: FAILED/WARNING)
- FAILED: 빨간색 표시, 테스트 중단
- WARNING: 노란색 표시, 테스트 계속
Assert Content #
UIObject의 텍스트 내용과 지정한 값을 비교해서 검사합니다.

Attributes
- UIObject: 검사할 UIObject
- comparator: 비교 조건
- =: 텍스트가 같으면 성공
- !=: 텍스트가 다르면 성공
- >, >=, <, <=: 숫자 비교
- match: 정규표현식 전체 일치
- search: 정규표현식 부분 검색
- color: UIObject의 중앙 색상 일치 (RGB 유사도 90% 이상)
- value: 비교할 값 (직접 입력 또는 ${key} 형식의 User Variable 사용)
- comparator가 color인 경우:
- color: Hex color code (예:
#BABABA
) - threshold: 색상 유사도 기준 (기본값: 0.9)
- color: Hex color code (예:
- comparator가 color인 경우:
- wait timeout: 최대 대기 시간 (기본값: 0ms, 범위: 0~600,000ms)
- custom message: 검사 결과로 표시할 메시지
- label: 라벨 값 (최대 10개, Assertion 실패 시 Ptero의 Label에 추가)
- type: 실패 시 처리 방식 (옵션: FAILED/WARNING)
- FAILED: 빨간색 표시, 테스트 중단
- WARNING: 노란색 표시, 테스트 계속
Assert Value #
이전에 저장한 값과 지정한 값을 비교해서 검사합니다.

Attributes
- key: 검사할 값의 이름
- comparator: 비교 조건
- =: 텍스트가 같으면 성공
- !=: 텍스트가 다르면 성공
- >, >=, <, <=: 숫자 비교
- match: 정규표현식 전체 일치
- search: 정규표현식 부분 검색
- value: 비교할 값 (직접 입력 또는 ${key} 형식의 User Variable 사용)
- wait timeout: 최대 대기 시간 (기본값: 0ms, 범위: 0~600,000ms)
- custom message: 검사 결과로 표시할 메시지
- label: 라벨 값 (최대 10개, Assertion 실패 시 Ptero의 Label에 추가)
- type: 실패 시 처리 방식 (옵션: FAILED/WARNING)
- FAILED: 빨간색 표시, 테스트 중단
- WARNING: 노란색 표시, 테스트 계속
Assert Changed #
이전 Step 실행 전과 현재 화면의 변화 여부를 검사합니다.

Attributes
- UIObject: 변화를 감지할 UIObject
- threshold: 변화 감지 기준 (기본값: 10%, 범위: 1~100%)
- wait timeout: 최대 대기 시간 (기본값: 5,000ms, 범위: 3,000~10,000ms)
- custom message: 검사 결과로 표시할 메시지
- label: 라벨 값 (최대 10개, Assertion 실패 시 Ptero의 Label에 추가)
- type: 실패 시 처리 방식 (옵션: FAILED/WARNING)
- FAILED: 빨간색 표시, 테스트 중단
- WARNING: 노란색 표시, 테스트 계속
Assert Wait For #
화면 요소가 나타나거나 사라질 때까지 기다린 후 검사합니다. 로딩 시간이 불규칙적인 경우에 사용할 수 있습니다.

Attributes
- UIObject: 검사할 UIObject
- wait timeout: 최대 대기 시간 (기본값: 5,000ms, 범위: 1,000~60,000ms)
- until: 검사 조건 (옵션: EXISTS/NOT EXISTS)
- EXISTS: 화면 요소가 나타나면 성공
- NOT EXISTS: 화면 요소가 사라지면 성공
- custom message: 검사 결과로 표시할 메시지
- label: 라벨 값 (최대 10개)
- type: 실패 시 처리 방식 (옵션: FAILED/WARNING)
- FAILED: 빨간색 표시, 테스트 중단
- WARNING: 노란색 표시, 테스트 계속
Assert Message #
토스트 팝업이 제대로 표시되는지 검사합니다. 설정한 시간 동안 화면 변화를 감지해서 변한 부분의 텍스트를 읽어 비교합니다.
Assert Message Attributes
- comparator : 비교 조건을 선택할 수 있습니다. 자세한 사항은 If Content의 comparator 부분을 참조하세요.
- value : 토스트 팝업의 메세지를 입력합니다. 모든 메세지 내용을 입력할 수도 있고, 일부 값만을 입력할 수도 있습니다.
만약 이전에 설정한 값을 사용할 경우에는 ${key}를 입력합니다. - wait timeout : 최대 대기시간을 입력할 수 있습니다.
– 기본값 : 5,000 (ms)
– 값 범위 : 3,000 ~ 10,000 (ms) - use previous screen : 이전 스텝의 액션이 수행되기 전의 화면 정보부터 화면 변화를 감지하거나, 액션 이후 화면부터 변화를 감지할지 선택할 수 있습니다.
– TRUE : 이전 스텝의 액션 수행 전 화면부터 화면 감지를 시작합니다.
– FALSE : 액션 이후 화면부터 화면 감지를 시작합니다. - custom message : ASSERTION 결과로 출력할 메시지를 입력할 수 있습니다. 이 후 입력한 메세지는 Output으로 출력됩니다.
- label : label 속성의 입력 필드 선택 시 label 값을 입력 할 수 있습니다.
– label 추가는 10개로 한정됩니다.(삭제 가능)
– 이전에 사용한 label이 존재한다면 Drop Down 형식으로 목록이 출력됩니다.
– Assertion 실패 시 Ptero의 Test Runs에 라벨로 추가됩니다. - type : comparator 조건의 결과가 거짓인 경우, 검사 결과를 Error로 출력할지 Warning으로 출력할지 선택할 수 있습니다.
– ERROR : 조건의 결과가 거짓이면, 빨간색으로 결과가 출력되며 시나리오가 중단됩니다.
– WARNING : 조건의 결과가 거짓이면, 노란색으로 결과가 출력되며 다음 스텝이 계속 진행됩니다.

Advanced #
시나리오 구조화와 테스트 제어를 위한 고급 기능들입니다.
Common Scenario #
Common Scenario를 불러와서 사용할 수 있습니다.

Attributes
- Common Scenario : 사용할 Common Scenario 선택
Script #
숫자 연산이나 외부 API 호출 등 코드 처리가 필요한 경우 사용합니다.

Attributes
- language: 사용할 언어 (기본값: python, 옵션: python/bash)
- script: 실행할 코드 작성
: 작성한 코드 복사
: 큰 화면에서 코드 작성
: 코드 실행
- timeout: 최대 실행 시간 (기본값: 10,000ms, 범위: 3,000~1,200,000ms)
Block #
관련된 여러 Step을 하나로 묶어서 시나리오 구조를 명확하게 만듭니다.

Attributes
- Description: Block에 대한 설명
- 입력한 내용이 Block 오른쪽에 요약으로 표시됩니다.
- 요약을 클릭하면 전체 설명이 펼쳐집니다.
사용자가 요약 정보를 클릭하면, 해당 요약이 사라지고 전체 설명이 확장되어 표시됩니다.
전체 설명은 또는 요약 정보 표시 영역을 다시 클릭해 접을 수 있습니다.
모든 설명을 한 번에 펼치거나 닫으려면, Scenario Editor 상단의 버튼을 사용합니다.
Finish #
테스트를 임의로 종료시킵니다. 설정한 type에 따라 결과 상태가 결정됩니다.

Attributes
- type: 테스트 결과 (옵션: ERROR/WARNING/PASS)
- message: 종료 이유 메시지
- label: 라벨 값 (최대 10개, 조건 없이 Ptero에 추가)
Sync #
D2D 테스트에서 여러 디바이스의 실행 시점을 동기화합니다. 모든 디바이스가 해당 지점에 도달한 후 다음 Step을 동시에 진행합니다.
Scenario Settings > D2D Test에서 디바이스의 Role이 지정된 경우에 노출됩니다.
Sync 액션 실행 시 모든 참여 디바이스가 해당 지점에 도달할 때까지 대기하며, 전체 디바이스가 동기화 지점에 도달한 후 다음 스텝을 동시에 진행합니다.
예시 실행 패턴:
- 디바이스 A: Step 1 → Step 2 → Sync → (대기) → Step 4
- 디바이스 B: Step 1 → Step 3 → Sync → (대기) → Step 4
두 디바이스 모두 Sync 지점에 도달한 후 Step 4가 동시에 실행됩니다.
Sync 액션은 다음 상황에서 필수적으로 사용됩니다:
- 메시지 전송 후 수신 확인이 필요한 경우
- 파일 공유 완료 후 동시 확인이 필요한 경우
- 게임에서 동시 액션이 필요한 경우
자세한 사용법은 Stego 사용 가이드 > 10.0. 시나리오 예제에서 확인할 수 있습니다.