Similar to Test Users, Test Apps let you quickly create Facebook App IDs for use during the development, testing, staging or QA phases of the app development lifecycle.
Test Apps are like regular apps in that they have their own App ID and independent settings, but they offer a number of advantages for use during pre-production:
- Test Apps share the same app-scoped User ID namespace as your production app making it simpler to debug issues with app-scoped IDs, or in cases where you use a copy of your production database for development.
- From within your production app, you have one place to manage roles across all your test apps. When someone joins your team, it's quick to set them up with the right roles, or easy to revoke their access if they leave.
- People who are Admins on your production app have permission to edit the settings on your test apps - making it easy for your most trusted people to manage your fleet of apps.
- When creating test apps - the settings are copied from your production app so its simple to spinup new apps which mirror your production app's settings
- Test Apps are always in Development Mode, making it less likely someone may chance upon a pre-release version of your product
- Test Apps have the same Platform Migration options as your production app making it easy to test migrations before applying them on to production app.
- Test Apps have the same version availability as your production app. If your production app can call a particular version, your Test App can too.
Creating and Managing Test Apps
Test Apps are 'children' of a production app and can be managed within your production app's Dashboard.
Creating Test Apps
To create or manage the test versions of your production app, go to your production app's Dashboard and click on the "Test Apps" tab.
From within the Test Apps tab, you can view, create and delete the test apps that are associated with your production app. To create a new test app, click "Create New App":
If you're starting a project from scratch, first create a new production App from the All Apps page - this will be the app you ultimately use in production. You can then create test apps from your newly created production app's Dashboard
When creating a new test app, you'll be prompted to enter a name. You may want to name the test app after the function it will be used for, or the developer on your team who'll be using it. Example: "My Great App - Staging" or "My Great App - Amy dev".
The test app will be created with a snapshot of your production app's settings. After this, you can independently edit the settings of your test app without affecting your production app.
Note: Test Apps have fewer settings available to manage than an production app. This is because some settings are not revelant to apps which are never destined to be used by the public - for example, as test apps cannot be listed in App Center, there's little need to upload App Center image assets.
Deleting Test Apps
You can delete test apps from the Test Apps tab of your production app. Please note, that if you delete your production app, all the test apps will also be irreversably deleted.
A common piece of feedback we've heard from developers is that, as your team grows, it becomes harder to manage who has access to what across your production app, and the other app IDs you use in pre-production. To help with this scenario, we're introducing two additional features alongside Test Apps:
Admins are inherited from the production app
If a person is an Admin on your production app, they are automatically also an Admin of your test apps. This makes it easy for your most trusted people to manage your fleet of test apps. Within the test app's Role tab, Admins inherited from the production app will be shown, but cannot be removed.
Test apps retain their own editable Admin role. If you want one of your engineers to only have edit access to a subset of your test apps, you may add them to the Admin role for the test apps you'd like them to manage.
As Test Apps will always remain in Development Mode, they have a simplified role hierachy; they only have the Administrator and Tester roles. As with production apps, Testers can login to the app but not see or edit the Test App's settings, while Administrators have full control over the test app's settings, including the ability to add and remove people from roles.
The People View
For large development teams, aside from your production app, you may have many test apps in use - perhaps even one per engineer. When people join your team you need to be able to grant them access to the appropriate apps. When people leave your team, you need to be sure you've revoked their access to all your app.
The People view lists every person who has an Admin, Developer or Insights User role on the production app or on test apps. From this view, you can remove a person's access to all your apps one place.
You can also edit the roles a person has on each of your apps - for example, promote a Tester to be an Admin of a test app, or remove a person's Admin role from a test app.
I already have created apps for development, QA or staging. Can I merge these apps into my production app's Test Apps list?
Not at present. In order for many of features of test app (such as admin inheritance) to be performant, we need to ensure Test Apps share the same database within Facebook's infrastructure. We can only ensure this when a test app is created. Existing App IDs may live on a different database. We suggest creating new test apps and migrating your development teams to use these new test apps for development, testing, QA and staging purposes.
Is there a limit to the number of Test Apps I can create?
Currently you may create up to 50 test apps for a given production app.
Can Test Apps be put into Public Mode?
Test apps are designed for use during staging, development, testing or QA - rather than for being launched to the public - as such, Test apps always remain in Development Mode. If you'd like to give more people the ability to use a Test App (for example, when beta testing), you should add them to the Tester role within your test app's Roles tab.
My production app's settings have changed. Is there an easy way push that setting to all my test apps?
Not at present, although we hope to add this feature in the future. For now, you'll need to change settings in each test app manually. Alternatively you could create a new test app who's settings will be copied from the production app at create-time.
I've setup my test app with setting I want eventually use on my production app. Is there an easy way to update my production app with these settings?
Not at present, although we hope to add this feature in the future. For now, you'll need to update your production app's settings manually.
Can I just continue to create regular apps and use these for testing?
Yes, you may continue to create regular apps via the "Create New App" dialog on the All Apps page. However, where you're issued an app-scoped user ID, they will be different for the same user. You may use the Business Mapping API to correlate the same user across these apps. However, with Test Apps, the app-scoped user ID will be the same between the production app and all its test apps.
I've logged into my production app and get one ID, and logged into a test app and I get a different ID. I thought test apps shared the same User ID as the production app. What gives?
It's true that where Facebook issued an app-scoped user ID for a production app and a test app, these will both be the same. However, the type of User ID Facebook issues depends on the version of the Graph API which the user first-logged using. As such it is not possible to ensure the IDs are always consistent across test apps.
For example, if someone first-logs in to your production app using Graph API v1.0, your app will be issued the original Facebook User ID for that person . If they then first-login to your test app using Graph API v2.0, the test app will be issued an app-scoped User ID for them. This will be different from their original User ID.
For apps created after April 30th 2014, Facebook will always issue an app-scoped user ID and hence the ID will always be consistent between test apps, and between test apps and the production app.