As seen in https://integration.wikimedia.org/ci/job/integration-quibble-fullrun-extensions/4/console:
17:46:36 1) GET /contributions/count 17:46:36 GET /me/contributions/count 17:46:36 Returns edits filtered by tag: 17:46:36 17:46:36 AssertionError: expected 0 to deeply equal 1 17:46:36 + expected - actual 17:46:36 17:46:36 -0 17:46:36 +1 17:46:36 17:46:36 at testGetContributionsCountByTag (tests/api-testing/REST/ContributionsCount.js:60:10) 17:46:36 at processTicksAndRejections (internal/process/task_queues.js:95:5) 17:46:36 at async Context.<anonymous> (tests/api-testing/REST/ContributionsCount.js:117:4) 17:46:36 17:46:36 2) GET /contributions/count 17:46:36 GET /user/{user}/contributions/count 17:46:36 Returns edits filtered by tag: 17:46:36 17:46:36 AssertionError: expected 0 to deeply equal 1 17:46:36 + expected - actual 17:46:36 17:46:36 -0 17:46:36 +1 17:46:36 17:46:36 at testGetContributionsCountByTag (tests/api-testing/REST/ContributionsCount.js:60:10) 17:46:36 at processTicksAndRejections (internal/process/task_queues.js:95:5) 17:46:36 at async Context.<anonymous> (tests/api-testing/REST/ContributionsCount.js:151:4) 17:46:36
It seems this is a case of the API request for contributions count being handled before the data is committed in MySQL. There are already existing uses of sleep() in the api-testing codebase that work around similar problems but it would be better to have a try/retry loop for n seconds, like wdio's waitUntil() method for browser tests.
In the meantime, I'll submit a patch to disable this test.