This page holds important information related to testing and quality assurance for Gecko's graphics code.
- About the team
- Major code changes worth tracking
- Inventory of hardware available for testing
- Information about graphics driver blocklisting
- Draft guides related to Graphics QA
- Metrics-Graphics: staging, production
- Code Quality: Code Quality, Quality Indices
- Telemetry: GFX, All
- Bugzilla: Bug Age
Device ID Catalogs:
|Milan Sreckovic||milan||Team Lead|
|Jonathan Kew||jfkthame||Developer, Text rendering|
|Anthony Hughes||ashughes||QA Engineer|
Here are some ways you can help the Graphics team (and Mozilla):
- Run a sanity test
- Add your details to our inventory
- Send an e-mail to introduce yourself and get further direction
DEPRECATION WARNING: One&Done is being decommissioned. In the meantime, all tasks have been archived to this wiki.
There is a large discrepancy between the platform/hardware/driver configurations we see on Release versus what we see on our test branches. Additionally, the Graphics team and our testing community does not and can not provide sufficient test coverage to fill this gap. As a result we've historically been notified far too late about critical graphics issues triggering multiple chemspill releases and a loss of users.
In an effort to improve pre-release visibility of graphics regressions we have partnered with Betabreakers, a company that maintains a lab specifically designed to test various modern and legacy configurations of Windows versions, graphics hardware, and graphics drivers. We try to coordinate a graphics sanity testrun with them once per mozilla-aurora cycle, as detailed below.
More information about our relationship with Betabreakers can be found on mana.mozilla.org.
- Firefox 50: Hardware Accelerated Video
- [DONE] Firefox 48: Windows 10 Anniversary Update
- [DONE] Firefox 48: WARP disabled further
- [DONE] Firefox 46: HTML5 video with hardware acceleration disabled
- [DONE] Firefox 45: WinXP D3D9 E10S compatibility
- [DONE] Firefox 44: Country-specific top sites
- [DONE] Firefox 43: Typical sanity check plus bug cleanup
- [DONE] Firefox 42: Windows 10 AMD/NVidia stability
- [DONE] Firefox 41: WARP disabled on Windows 7 and earlier
- [DONE] Firefox 40: WebGL with e10s
- [DONE] Firefox 39: beta sanity check
- [DONE] Firefox 38: MSE stress test
99 Total; 18 Open (18.18%); 77 Resolved (77.78%); 4 Verified (4.04%);
Triage currently focuses on two main areas: identifying critical stability regressions, and identifying issues which may have slipped through the cracks. We try to have a one hour triage session each weekday, usually starting around 10:00am Pacific. More information about this process can be found on the wiki and dashboard.
|ID||Summary||Status||Last change time|
|772577||Build failure: error C2065: 'L' : undeclared identifier @ GLLibraryEGL.cpp(105)||NEW||2012-07-17T12:59:08Z|
|863186||WebGL crashes Windows nightly with Optimus, NV GPU, and Layers accel||NEW||2016-07-29T19:21:31Z|
|988594||[Camera][Nexus4] Very slow to draw previews when swiping through Preview from Camera||NEW||2014-10-23T08:02:42Z|
|1064478||Call glFlush() of WebGL and SkiaGL at correct timing||NEW||2014-09-09T15:34:27Z|
|1073873||Green screen when trying to use built-in camera with WebRTC on Flatfish||NEW||2014-12-26T10:40:27Z|
|1342437||images with base64 src should be displayed immediately without using onload event in order to be drawn in HTML5 canvas (like on Chrome/IE/...)||UNCONFIRMED||2017-08-24T02:22:38Z|
6 Total; 6 Open (100%); 0 Resolved (0%); 0 Verified (0%);
|ID||Summary||Status||Last change time|
|627706||Crash [@ nsCSSRuleProcessor::RefreshRuleCascade(nsPresContext*) ]||NEW||2016-05-03T00:47:10Z|
|1160157||non device reset startup forced crash in mozilla::layers::SyncObjectD3D11::FinalizeFrame()||ASSIGNED||2017-07-28T04:04:37Z|
|1218607||[meta] Firefox 44 on android crashing in [@ libGLESv2_adreno.so@ ...]||NEW||2017-09-07T17:51:08Z|
|1266626||EXCEPTION_PRIV_INSTRUCTION crash in nsIFrame::GetUsedBorder called from nsDisplayBorder::AllocateGeometry due to AMD CPU bug||NEW||2017-02-22T16:26:59Z|
|1267997||crash in UMDevice::SetShaderResources||REOPENED||2017-09-19T17:42:26Z|
|1270226||Firefox 46.0.1 spike in EXCEPTION_ACCESS_VIOLATION_WRITE crashes in nsIFrame::GetUsedBorder on bad AMD CPUs||NEW||2016-10-17T19:32:20Z|
|1306168||Crash in mozilla::layers::CompositorD3D11::BeginFrame||NEW||2017-04-04T20:32:53Z|
|1392911||startup Crash @ GlyphDataElement<T>::GetExistingGlyphs||NEW||2017-09-18T18:10:56Z|
8 Total; 8 Open (100%); 0 Resolved (0%); 0 Verified (0%);
146 Total; 146 Open (100%); 0 Resolved (0%); 0 Verified (0%);
|ID||Summary||Last change time|
|1409297||Drag and drop not working, google drive||2017-10-18T19:00:42Z|
|1409519||-webkit-mask-image is not ignored||2017-10-18T18:42:38Z|
|1409591||Firefox is displaying font-weight 600 as lighter than font-weight 500||2017-10-18T18:38:10Z|
|1410016||Nightly does not render all pages properly||2017-10-19T21:14:28Z|
|1410131||3D: Front-sides of hyperrectangles inside hyperrectangles cannot receive pointer-events||2017-10-20T09:41:08Z|
|1410339||setting text to a non-emoji font doesn't work||2017-10-23T05:51:51Z|
|1410374||sone fonts can't be selected||2017-10-23T22:24:10Z|
|1410448||twitter dm's dont work in webrender||2017-10-23T18:38:07Z|
|1410511||userContent.css and userChrome.css are not consistently applied||2017-10-22T14:34:54Z|
9 Total; 9 Open (100%); 0 Resolved (0%); 0 Verified (0%);
Understanding the Problem Space
First order of business for my transition to the Graphics team is to understand the problem space so I can understand the immediate needs of the team and make the best impact I can in the shortest amount of time.
- What are the key problems/challenges facing the Graphics team in terms of quality?
- discrepancy in environments between testers and release users
- discoverability of bugs pre-release
- Where can QA add value/support to the Graphics team?
- improving pre-release discoverability of bugs
- closing the gap between tester and release systems
- helping with bug triage, particularly with bugs hiding in general components
- representation in crashkill
- improving code coverage and/or identifying gaps in code coverage
- identifying ways to improve participation in the graphics team (events, projects, One & Done, etc)
- documentation of tools, testing processes, etc
- building out the lab in Toronto
- continuing to drive Betabreakers testing every 6 weeks
- verifying bug fixes (what does this look like)?
- profiling areas of risk (eg. troublesome configs)
- conducting root cause analysis for regressions
- understanding problems outside of our control (eg. driver resets)
- feature testing and upcoming priorities (e10s, Windows 10, El Capitain, Android, B2G, etc)
- What does QA need to know to be effective?
- key components of an actionable Graphics bug
- fundamentals/technologies that should be learned
- how to distinguish a graphics crash from a non-graphics crash with a graphics signature
- meetings, mailing lists, bugzilla components to watch, blogs, IRC channels to join, etc
- who is each member of the team (incl. contributors) and what do they do
- where does graphics code reside in the tree?
- what role does Unified Telemetry in graphics quality?
- what are the prefs to enable/disable different functionalities?
- we need a database of known-troublesome hardware/driver configurations to inform testing, hardware acquisitions, and blocklisting
- Understanding the Stability
- How do we identify a graphics crash?
- by signature: gfx, layers, D2D, D3D, ?...
- by topmost filename: gfx, ?...
- by driver (DLL, version, ?...)
- by device/vendor ID?...
- How do we prioritize graphics crashes?
- Overall topcrashes in release > beta > aurora > nightly
- Gfx crashes in release > beta > aurora > nightly
- Explosive crashes in release > beta > aurora > nightly
- What tools do we have at our disposal to investigate crashes?
- What information is needed to make a crash actionable by developers?
- Correlations to particular hardware, driver, add-on, 3rd-party software, or library
- Sanity checking via One & Done
- Meetups to connect testers/users with devs
- Testdays to teach people about graphics testing
- Documentation and translation of documentation
- Engaging on community spaces (Discourse, Reddit, Facebook, Twitter, etc)
- COMPOSITE_TIME: time in CompositorParent::CompositeToTarget dispatching draw calls and calling SwapBuffers, but not texture upload (ie. complete composition)