Apps/QA/Test Infrastructure

From MozillaWiki
< Apps‎ | QA
Jump to navigation Jump to search

Test Infrastructure Requirements

The Problem

The problem we are currently facing in our testing environments is that each group has their own infrastructure. The infrastructure is built around varying concepts of dev , beta, staging environments.

The problem is those environments all have different schedules that code is pushed, and released, and it is not possible to guarantee what version of the marketplace, browser id, Apps , Sync Tests have gone through a level of integration testing.

Each group has their own infrastructure, and it's not entirely clear to each group what the benefits of moving to a shared environment are. Current Release Schedules Are the following:

Sync Service - https://intranet.mozilla.org/QA/Server_Weekly_Trains_Staging#Schedules

 Weekly Push
 Wed Push to staging 
 Monday - Release to production
 

MarketPlace - https://mail.mozilla.com/home/wclouser@mozilla.com/AMO%20Schedule.html

 Infrastructure Diagram Release Infra
 addons.allizom is staging server, but only updated as needed
 Release happens 2pm Thursday
 DBA Sheeri / MPressman

BrowserID - https://wiki.mozilla.org/QA/BrowserID/TestPlan#Weekly_Test_Schedules

 Thursdays: deployment to Production, Stage (QA), and Dev
 Thursdays/Fridays: open testing and experimentation by Dev, QA, and community
 Following week: Monday - Wednesday: QA testing and sign off of current deployment 
 DBA: petef

Apps - Web Services (HTML / JS / Dashboard)

 As needed

The Purpose

 Define an apps test environment that allows for testing javascript api's, the firefox browser, and the android Soup app. 

QA should have the ability to qualify a build, and know with certainty that those are the bits being shipped. Production releases should be done using the jenkins server to push the files to production.

Minimum Requriements

Initial Hardware Requirements

 build.apps.mozilla.com
 apps-staging.apps.mozilla.com
 myapps-staging.apps.mozilla.com 


Concept

Webapps test infrastructure.png

Reasoning

Multiple Build Targets

Within each build we have hardcoded values for myapps.mozillalabs, and apps.mozillalabs. Ideally we need to parameterize these inputs to the build process.

 lib/api.js:      "127.0.0.1:60172":"", "myapps.mozillalabs.com":"",
 lib/api.js:      "stage.myapps.mozillalabs.com":"", "apps.mozillalabs.com":"",
 lib/main.js:const APP_SYNC_URL = "https://myapps.mozillalabs.com";
 lib/main.js:      "https?://myapps.mozillalabs.com",
 lib/main.js:      "*.myapps.mozillalabs.com",
 lib/main.js:      "https?://apps.mozillalabs.com",
 lib/main.js:   * openwebapps@mozillalabs.com should be got from self.data
 lib/main.js:  let button = win.document.getElementById("widget:openwebapps@mozillalabs.com-" + TOOLBAR_ID);
 lib/main.js:    let dboard = "https://myapps.mozillalabs.com";
 lib/main.js: * library, hosted at https://myapps.mozillalabs.com/
 lib/main.js:      contentURL: "https://myapps.mozillalabs.com",
 lib/main.js:        if (origin == "https://myapps.mozillalabs.com") {
 lib/main.js:      if (!found) tabs.open("https://myapps.mozillalabs.com");
 lib/nativeshell.js:                                "http://apps.mozillalabs.com");
 lib/nativeshell.js:                                      "http://apps.mozillalabs.com");
 lib/nativeshell.js:        subKey.writeStringValue("Contact", "http://apps.mozillalabs.com");
 lib/nativeshell.js:        //subKey.writeStringValue("Readme", "http://apps.mozillalabs.com");
 package.json:    "id": "openwebapps@mozillalabs.com",

The same is true for android. It is important to be able to modify these parameters for QA / Release / Automation. So that when we click on the Apps icon in the lower right of the browser it launches the staging myapps instead of the production myapps.mozillalabs.com

We will probably need to be able to generate our own nightlies based upon a github repo build of firefox. This would be necessary for QA to be able to test based upon what is checked in to github vs having to wait until patches are reviewed.

Staging Servers

apps-staging.apps.mozilla.com

 This server is purely to serve apps that are staged for qa, that are served up locally.  Currently a lot of the tests we run are based upon external apps. Possibly we can use a new name for the server to indicate it is something slightly different.  That what it truly holds is our repository of test apps. apps-staging will also host a staging version of the html / js version of mozApps apis. 

myapps-staging.apps.mozilla.com

 This is a where the dashboard will be hosted. Idea is to be able to test dashboard changes before they go live.