---
title: "Test apps in player"
slug: "test-apps-in-player"
updated: 2024-11-19T17:04:13Z
published: 2024-11-19T17:04:13Z
canonical: "support.tulip.co/test-apps-in-player"
---

> ## Documentation Index
> Fetch the complete documentation index at: https://support.tulip.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Test apps in player

## Overview

**In this article, you will learn:**

- **How to debug different common failure modes, like Connector Functions**
- **3 approaches to test applications in Tulip Player**

Sometimes the limitations of Development mode force you to test in Tulip Player. This document walks through some tips and tricks to test your Applications in Player.

## How To

This guide will show a few ways to modify your app so that you can discover the bugs in your app logic.

First, use one of these resources to test other Tulip products that may be connected to your app:

### Connectors

You can test SQL Connector within the Connectors page. [Use this separate guide](https://support.tulip.co/docs/how-to-write-a-sql-connector-function) to test connectors.

### Edge Devices/Factory Kit

You can use the ["Factory Kit Setup"](/r230/docs/factory-kit-quickstart-guide)app to test your Factory Kit. [Use this guide](https://support.tulip.co/docs/troubleshoot-your-tulip-io-gateway) if your app is not getting any signals from your Edge Devices.

### Frozen Tulip Player

If your Tulip app is frozen in the Tulip Player, and you cannot press ANY buttons, use this [guide to troubleshooting the Tulip Player](https://support.tulip.co/docs/how-to-troubleshoot-the-tulip-player)

### Table Records

If you are trying to discover why a record is not being loaded or created successfully, make sure to [restart the Tulip Player](https://support.tulip.co/docs/how-to-use-the-tulip-player) before testing the app each time.

If your issue is not related to any of the features above, read on to learn how to debug app logic.

## Test 1- Using Variable Text To See Variable Values

Many issues revolve around the values of a Variable or field in a Table Record.

So, if you are wondering why a variable does not have a specific value, you can use Variable text or Table Record text to see current status.

### Variable Text

To see the value of a Variable at any time, select "Variable" under the Text widget in the Tool Bar.

![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/How%20To%20Troubleshoot%20Logic%20In%20The%20App%20Editor_151201749.png)

Then, select the Variable text on the open step. In the Side Pane under the "Widget Tab", select the Variable that you would like to investigate.

![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/How%20To%20Troubleshoot%20Logic%20In%20The%20App%20Editor_151202427.png)

Then, after you open the step in the Tulip Player, you will be able to see the current value of the variable.

### Table Record Text

To see the value of all fields in a loaded Table Record at any time, select "Table Record" under the Text widget in the Tool Bar.

![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/How%20To%20Troubleshoot%20Logic%20In%20The%20App%20Editor_151203729.png)

Then, select the empty Table Record text on the open step. In the Side Pane under the "Widget Tab", select the Record Placeholder where the table record is loaded.

![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/How%20To%20Troubleshoot%20Logic%20In%20The%20App%20Editor_151206828.png)

Then, after you open the step in the Tulip Player, you will be able to see the current loaded Table Record. If no values are shown under the field labels, then a record has not been load successfully.

Here's an example where no table record has been loaded:

![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/How%20To%20Troubleshoot%20Logic%20In%20The%20App%20Editor_151208663.png)

## Test 2- Showing Which Trigger Statements Are Firing

Sometimes, you may have a series of "If" statements in a Trigger, and an unexpected statement might fire upon a button press or opening of a step.

If you want to discover which trigger statements are firing, you can use the "Show Message" Trigger Action. This is very similar to using the developer console to show specific values, if you are familiar with programming.

After you find a trigger statement that should fire, add a "Show Message" statement next to it to see if it successfully runs. You can even include a Variable value in the message.

![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/How%20To%20Troubleshoot%20Logic%20In%20The%20App%20Editor_151211777.png)

- "Show Message" "Static Value" "text" "We successfully increased the counter."

## Test 3- Create a General "Testing" Step

Sometimes, your test may not be straightforward. Or, it may need to be performed on multiple Steps.

To solve this, you can create a "Testing" step that is dedicated to showing multiple Variables and Table Records at once.

First, add a "Testing" button on the Base Layout so that the "Testing" step can be accessed from any other step.

![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/How%20To%20Troubleshoot%20Logic%20In%20The%20App%20Editor_151214046.png)

Then, add the Trigger that allows you to go to the same testing step every time.

![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/How%20To%20Troubleshoot%20Logic%20In%20The%20App%20Editor_151214750.png)

You can customize the testing step to your needs, but you may want to include multiple variables and table records.

Here is an example:

![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/How%20To%20Troubleshoot%20Logic%20In%20The%20App%20Editor_151215971.png)

The example above has 5 examples of static text, 3 examples of Variable text and one example of Table Record text.

**Connector Function**

**Connector Functions** are individual operations to interact with an HTTP or SQL Datasources. Connector Functions can have inputs and outputs, and can be called from: Triggers, Functions, Automations, and AI Agents.

Once pulled, data can be used throughout your applications.

**Tulip Player**

**Tulip Player** is the Windows/Mac executable program where users can run Tulip apps. Tulip player allows you to create a more seamless user experience by removing the need for a web browser and allows increased IT controls.

**Connectors**

**Connectors** enable real-time connectivity between your Tulip solution and a transactional system (e.g. an ERP). The output of a Connector Function can be used in Tulip Apps, Automations, and Functions.

- **HTTP Connectors** utilize HTTP API endpoints.
- **SQL Connectors** can enable connectivity with certain SQL databases.
- **MQTT Connectors** can connect to MQTT brokers for machine monitoring.

![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/connector.gif)

**Edge Devices**

**Edge Devices** are any hardware intended to connect physical things to the cloud. This can include entirely mechanical devices, older machines without network functionality, PLCs, and more.

Tulip sells the **Edge IO** and **Edge MC** that interface directly into **Triggers** in a breeze, but Tulip can also support other Edge Devices.

**Table Record**

A **Table Record** is a reference to a row in a **Tulip Table**. Table Records can be created either from the Table UI or from with an App Trigger.

To edit a record it must be loaded into a **Table Record Placeholder.**

**Variable**

**Variables**are a location to store app information. Variables have a specific type that must match the contents they can store.

Variables are only accessible within a single application and are cleared when the app is restarted or completed.

**Side Pane** **(Context Pane)**

The**Side Pane**is the configuration pane on the right side of the **App Editor**where steps, apps, and widgets can be configured. **Triggers**can be added to adjust widget behavior.![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Context%20Pane.png)

**WidgetTab**

In the **Side Pane**, the**Widget Tab**is where you can adjust the **Widget****-level**settings, including **Widget****Triggers,** **Widget** Datasource, **Widget** Contents, and more. ![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Widget%20Tab.png)

**Table Record Placeholder**

A **Table Record Placeholder** is a reference to a row in a **Tulip Table**. Table Records can be created either from the Table UI or from an App Trigger.

**Trigger**

**Triggers** are groups of logic that are tied to an app event, such as step open, timer, widget interaction, etc. App builders can add triggers to **widgets**, **machines**, **devices**, **apps**, and **steps**.

**Triggers** can contain **actions**, **transitions**, and **conditions**.

**Action**

**Actions**are different operations that can be executed in **Triggers. Actions**cannot move users to other apps, or other**steps.**

Many **Actions**can be added to a single **Trigger.**

*ex. Store the value of variable x to table field y, Print app step, Adjust Edge device GPIO pin.*

**Step**

A view your users will see within an application. **Steps** can be viewed chronologically or in whatever order best fits your process.

Steps can be grouped into **Step Groups**to manage and organize your app Steps.

**Steps**

A view your users will see within an application. **Steps** can be viewed chronologically or in whatever order best fits your process.

Steps can be grouped into **Step Groups**to manage and organize your app Steps.

**Variables**

**Variables**are a location to store app information. Variables have a specific type that must match the contents they can store.

Variables are only accessible within a single application and are cleared when the app is restarted or completed.

**Base Layout**

The **Base Layout** is the base template that all other **S****teps** will be built on top of. Establishing common navigation buttons, and a consistent app background and style across all of your app steps can expedite the training and app-building processes. ![](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Intro%20to%20the%20Tulip%20App%20Editor_511473104%201.png)
