Skip to content

Methods

Yevhen edited this page Jul 14, 2019 · 20 revisions

Configuration

Static class that contains method to set supported configuration's settings

Note: if a setting is not set, it will take default value for each

  • static void Set(Settings setting, object value) => Set setting and its value, that will be used by Pupetry.Puppeteer:
    • BaseUrl => base url of Puppetry.PuppetDriver endpoint that will be called by Puppetry.Puppeteer. Example: "http:\localhost" or "http:\127.0.0.1";
    • Port => port of Puppetry.PuppetDriver endpoint that will be combined with BaseUrl and called by Puppetry.Puppeteer. Example: "7111";
    • TimeoutMs => Default timeout in ms that will be used in Polling methods if custom timeout isn't provided;
    • SessionTimeoutMs => Default timeout in ms that will be used in creating PuppetDriver's session;
    • PollingStrategy => Strategy that will be used in polling methods. Can be Constant (will check result with constant step time in 500 ms) or Progressive (will check result with progressive step time: 100, 200, 400, 800 and so on);

Driver

Static class that contains method to interact with PuppetDriver

Methods:

  • void ReleaseSession() => Release current session to make usage Editor be available for next test;
  • void ReleaseAllSessions() => Release all sessions, even from other threads. Useful in the end of run, or at the begging to be sure that all Editors will be available for next tests;

Editor

Static class that contains method to interact with UnityEditor

Note: methods of the class are available only if tests are executed in UnityEditor

Methods:

  • public static void StartPlayMode() => Starts PlayMode in Editor;
  • public static void StopPlayMode() => Stops PlayMode in Editor;

Game

Static class that contains method to interact with Game itself

Note: methods of the class are available only if a Game is started. You can't use it in Edit Mode of the Editor. Will receive MainThreadUnavailableException exception if it was called in EditMode or PlayMode was not really started yet.

Methods:

  • static void MakeScreenshot(string fileName, string folderName) => Make screenshot of a game and save it to Directory.GetCurrentDirectory() + folderName with name fileName.png. If folderName is not exist, than will create it;
  • static void MakeScreenshot(string fullPath) => Make screenshot if a game and save it to path that declared. fullPath argument should contant full path + name of the screenshot with resolution (like *.png). The method won't create folder if it isn't exist, so you should create by yourself;
  • static string GetSceneName() => Returns name of active scene;
  • static void OpenScene(string sceneName) => Open scene by name;
  • void DeletePlayerPref(string key) => Delete PlayerPref by the key;
  • void DeleteAllPlayerPrefs() => Delete All PlayerPrefs;
  • float GetFloatPlayerPref(string key) => Get PlayerPref by the key with float value;
  • int GetIntPlayerPref(string key) => Get PlayerPref by the key with int value;
  • string GetStringPlayerPref(string key) => Get PlayerPref by the key with string value;
  • void SetFloatPlayerPref(string key, float value) => Set PlayerPref with the key and float value;
  • void SetIntPlayerPref(string key, int value) => Set PlayerPref with the key and int value;
  • void SetStringPlayerPref(string key, string value) => Set PlayerPref with the key and string value;
  • bool PlayerPrefHasKey(string key) => Check if PlayerPref with given key is exist;
  • void SetTimeScale(float timeScale) => Change Time.timeScale in the game;
  • void ExecuteCustomMethod(string method, string value = null) => Execute custom script that is implemented in //UnityPlugins/Puppet/Custom/CustomDriverHandler.cs;

GameObject

Class that contains method to interact with a GameObject

Note: use this class to interact with some GameObject of the application methods of the class are available only if a Game is started. You can't use it in Edit Mode of the Editor. Will receive MainThreadUnavailableException exception if it was called in EditMode or PlayMode was not really started yet, except while FindBy** methods or initializing new instant.

Methods:

  • GameObject FindByUPath(string upath) => Sets Upath locator that will be used to find the GameObject and return its instance;

  • GameObject FindByName(string root, string name) => Sets root element and name of the GameObject that will be used to find the GameObject. Root element should be active in hierarchy, otherwise that element wan't be found. The GameObject is descendant of the root element (not only direct child);

  • GameObject FindByNameAndParent(string root, string name, string parent) => Sets root element, parent element and name of the GameObject. Unity will search for root element (should be active in hierarchy), then will search for parent name (could be active and inactive in hierarchy + parent is descendant) and finally will search for GameObject with given name (could be active and inactive in hierarchy + the gameObject is descendant of parent element);

  • GameObject FindRalative(string upath) => Sets Upath locator where root is given element and searching by upath will be started from that gameObject;

  • bool Exists => property that returns result if the GameObject is exist in the hierarchy;

  • bool IsActiveInHierarchy => property that returns result if the GameObject is active in the hierarchy. NoSuchGameObjectException may be occurred if the gameObject is not existed. Need to be sure that the element is exist, before check if it is active in hierarchy to avoid NoSuchGameObjectException;

  • bool IsRendering => property that returns result if the GameObject is rendering (gameObject.GetComponent().isVisible). NoSuchGameObjectException may be occurred if the gameObject is not existed;

  • bool IsOnScreen => property that returns result if the GameObject is on the screen (by coordinates) but is not guaranteed that any other gameObject is not overlap the GameObject. NoSuchGameObjectException may be occurred if the gameObject is not existed;

  • bool IsGraphicClickable => property that returns result if the GameObject is clickable, checking Graphically (the gameObject is on the screen and Ui.Graphic.RayCast is hit the element first, so no other UI element is overlap the gameObject). NoSuchGameObjectException may be occurred if the gameObject is not existed;

  • int Count => returns number of GameObjects with given locator, if any gameObject was found, Count would be 0;

  • ScreenCoordinates Coordinates => returns 2d coordinates of the gameObject. NoSuchGameObjectException may be occurred if the gameObject is not existed;

  • string Info => returns detail info about the gameObject in json format;

  • void Click() => emulates Click on first gameObject that was found by set locator. NoSuchGameObjectException may be occurred if the gameObject is not existed;

  • void SendKeys(string value) => sets value to Input of the GameObject (gameObject.GetComponent().text = value) that was found by set locator. NoSuchGameObjectException may be occurred if the gameObject is not existed;

  • void DragTo(GameObject toGameObject) => emulate Drag from center of the game object to toGameObject center. NoSuchGameObjectException may be occurred if the gameObject is not existed;

  • void DragTo(ScreenCoordinates toCoordinates) => emulate Drag from center of the game object to given screen coordinates. NoSuchGameObjectException may be occurred if the gameObject is not existed;

  • void Swipe(Constants.Directions direction) => emulate Swipe to selected direction (Up, Down, Left or Right) from center of the gameObject that was found by set locator;

  • string GetSpriteName() => returns name of sprite in SpriteRenderer component. NoSuchComponentException may be occurred if the component is not added to the GameObject;

  • string GetComponent(string component) => returns json of given component. NoSuchGameObjectException may be occurred if the gameObject is not existed;

  • string ExecuteCustomMethod(string method, string value = null) => Execute custom script that is implemented in //UnityPlugins/Puppet/Custom/CustomDriverHandler.cs;

  • void Should(Condition condition, int timeoutMs) => Checks with set timeout a condition (like Should(Be.ActiveInHierarchy)). Will wait timeoutMs until given conditon is fulfilled or timeoutMs has expired;

  • void Should(Condition condition) => calls void Should(Condition condition, int timeoutMs) and uses Configuration.TimeoutMs as set timeoutMs;

  • void ShouldNot(Condition condition, int timeoutMs) => Checks with set timeout a condition is not fulfilled (like ShouldNot(Be.ActiveInHierarchy)). Will wait timeoutMs until given conditon is not fulfilled or timeoutMs has expired;

  • void ShouldNot(Condition condition) => calls void ShouldNot(Condition condition, int timeoutMs) and uses Configuration.TimeoutMs as set timeoutMs;