Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: end timestamp should reflect duration #410

Merged
merged 1 commit into from
Nov 5, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions __tests__/reporters/base.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ describe('base reporter', () => {
};
runner.emit('journey:end', {
journey: j1,
timestamp,
status: 'failed',
error,
start: 0,
Expand Down
4 changes: 4 additions & 0 deletions __tests__/reporters/json.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,7 @@ describe('json reporter', () => {
});
runner.emit('journey:end', {
journey: j1,
timestamp,
status: 'succeeded',
start: 0,
end: 11,
Expand Down Expand Up @@ -225,6 +226,7 @@ describe('json reporter', () => {

runner.emit('journey:end', {
journey: j1,
timestamp,
start: 0,
end: 1,
status: 'failed',
Expand All @@ -242,6 +244,7 @@ describe('json reporter', () => {
const journeyOpts = { name: 'name', id: 'id', tags: ['tag1', 'tag2'] };
runner.emit('journey:end', {
journey: journey(journeyOpts, () => {}),
timestamp,
start: 0,
end: 1,
status: 'skipped',
Expand Down Expand Up @@ -301,6 +304,7 @@ describe('json reporter', () => {
const emitEnd = (options, status = 'failed' as StatusValue) =>
runner.emit('journey:end', {
journey: j1,
timestamp,
start: 0,
status,
options,
Expand Down
2 changes: 2 additions & 0 deletions __tests__/reporters/junit.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ describe('junit reporter', () => {
});
runner.emit('journey:end', {
journey: j1,
timestamp,
start: 0,
status: 'failed',
options: {},
Expand Down Expand Up @@ -115,6 +116,7 @@ describe('junit reporter', () => {
});
runner.emit('journey:end', {
journey: j1,
timestamp,
start: 0,
status: 'failed',
options: {},
Expand Down
1 change: 1 addition & 0 deletions src/core/gatherer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ export class Gatherer {
static browser: ChromiumBrowser;

static async setupDriver(options: RunOptions): Promise<Driver> {
log('Gatherer: setup driver');
const { wsEndpoint, playwrightOptions, networkConditions } = options;

if (Gatherer.browser == null) {
Expand Down
14 changes: 11 additions & 3 deletions src/core/runner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ interface Events {
JourneyResult & {
journey: Journey;
options: RunOptions;
timestamp: number;
};
'journey:end:reported': unknown;
'step:start': { journey: Journey; step: Step };
Expand All @@ -149,8 +150,12 @@ export default class Runner extends EventEmitter {
static screenshotPath = join(CACHE_PATH, 'screenshots');

static async createContext(options: RunOptions): Promise<JourneyContext> {
const start = monotonicTimeInSeconds();
const driver = await Gatherer.setupDriver(options);
/**
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for adding the comment

* Do not include browser launch/context creation duration
* as part of journey duration
*/
const start = monotonicTimeInSeconds();
const pluginManager = await Gatherer.beginRecording(driver, options);
/**
* For each journey we create the screenshots folder for
Expand Down Expand Up @@ -339,14 +344,16 @@ export default class Runner extends EventEmitter {
result: JourneyContext & JourneyResult,
options: RunOptions
) {
const end = monotonicTimeInSeconds();
const { pluginManager, start, status, error } = result;
const pluginOutput = pluginManager.output();
this.emit('journey:end', {
journey,
status,
error,
start,
end: monotonicTimeInSeconds(),
end,
timestamp: getTimestamp(),
options,
...pluginOutput,
browserconsole: status == 'failed' ? pluginOutput.browserconsole : [],
Expand Down Expand Up @@ -378,6 +385,7 @@ export default class Runner extends EventEmitter {
};
this.emit('journey:end', {
journey,
timestamp: getTimestamp(),
start,
options,
end: monotonicTimeInSeconds(),
Expand All @@ -393,8 +401,8 @@ export default class Runner extends EventEmitter {
const result: JourneyResult = {
status: 'succeeded',
};
log(`Runner: start journey (${journey.name})`);
const context = await Runner.createContext(options);
log(`Runner: start journey (${journey.name})`);
try {
this.registerJourney(journey, context);
const hookArgs = {
Expand Down
2 changes: 2 additions & 0 deletions src/reporters/json.ts
Original file line number Diff line number Diff line change
Expand Up @@ -435,6 +435,7 @@ export default class JSONReporter extends BaseReporter {
'journey:end',
async ({
journey,
timestamp,
start,
end,
networkinfo,
Expand Down Expand Up @@ -501,6 +502,7 @@ export default class JSONReporter extends BaseReporter {
this.writeJSON({
type: 'journey/end',
journey,
timestamp,
error,
payload: {
start,
Expand Down