Closed Bug 993276 Opened 10 years ago Closed 10 years ago

[Calendar] Screenshot reference test for launch timing.

Categories

(Firefox OS Graveyard :: Gaia::Calendar, defect)

x86
macOS
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED WONTFIX

People

(Reporter: evanxd, Assigned: evanxd)

References

Details

Attachments

(1 file, 2 obsolete files)

46 bytes, text/x-github-pull-request
Details | Review
Screenshot reference test for launch time.
For more details, please refer to https://bugzilla.mozilla.org/show_bug.cgi?id=984726#c11.
Attached file Pull request (obsolete) —
Comment on attachment 8403913 [details] [review]
Pull request

Hi Kevin,

Could you help me to review the patch?
Thanks.
Attachment #8403913 - Flags: review?(kgrandon)
The patch was already passed on Travis, see it at https://travis-ci.org/mozilla-b2g/gaia/builds/22600817.
Summary: Screenshot reference test for launch time. → Screenshot reference test for launch timing.
Comment on attachment 8403913 [details] [review]
Pull request

That was quick, awesome! I feel strongly that we should have a console.log of the image data when they do not match, and probably wrap this inside of a helper function. What do you think?
Attachment #8403913 - Flags: review?(kgrandon)
Hi Kevin,

For printing the base64 image when they do not match, we could just do this at https://github.com/evanxd/gaia/blob/053f90262e3e4035426e9110348179d706808e81/apps/calendar/test/marionette/screenshot_ref_test.js#L26-L30. It will print the expected and actual images on terminal. It is what we want, right?
Comment on attachment 8403913 [details] [review]
Pull request

Hi Kevin,

I already updated the patch for the comments.
Please help me to review the patch.

Thanks.
Attachment #8403913 - Flags: review?(kgrandon)
Calendar has had a lot of test problems because of changes in date because it uses the current system clock.  It doesn't look like this test is doing anything special to lock down the date.  Has Calendar's behaviour test-wise changed in this regard?
Hi Andrew,

Good point.
No, we don't do that yet in the patch.

So if we just set a fixed date before run the test, does it make sense?
Attachment #8403913 - Flags: review?(kgrandon)
Attached file Pull request (obsolete) —
Attachment #8403913 - Attachment is obsolete: true
Status: NEW → ASSIGNED
Attached file Pull request
Attachment #8404566 - Attachment is obsolete: true
Hi Kevin,

I have no good idea to deal with the timing issue at Comment 7 currently.
I think changing the system date with using `mozTime` might be not good idea.
Because we need to change settings app and do executeScript with `mozTime`, it looks hacking and unusual.

So could we do screenshot reference test for advanced settings view first?
But the screenshot looks weird, see data:image/png;base64,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.

How do you think?
Flags: needinfo?(kgrandon)
That is disheartening. It sounds like there are two known issues that we need to solve before we can really do this then.

1 - Freezing/setting of the system clock.
2 - Screenshot boundry after using transforms on panels. This one isn't really a blocker, but it just seems really janky to implement screenshots without having a proper viewport.

I would personally prefer to fix these two things before we try to implement these tests, though this may require platform work.

Perhaps we should open two bugs for this and block bug 984726 on them?
Flags: needinfo?(kgrandon)
Sure, let's file bugs.
Hi Kevin,

But for the time issues, could we just trigger the `changeDate` method https://github.com/mozilla-b2g/gaia/blob/master/apps/calendar/js/views/time_parent.js#L171 to instead of freezing system clock for setting a fixed time in Calendar app? How do you think about this?
Flags: needinfo?(kgrandon)
I could see pros and cons of doing it either way. If for example we adopt this testing strategy in other apps, they would have to have their own solution for freezing the date. Probably worth running this by Gareth and Andrew Sutherland real quick to get their thoughts. (Or just mark them as review? on the patch maybe)
Flags: needinfo?(kgrandon)
Summary: Screenshot reference test for launch timing. → [Calendar] Screenshot reference test for launch timing.
Hi Andrew,

Excuse me.
How do you think about the time issue you said at Comment 7?

Currently we have two solution for that.
1. do executeScript for `changeDate` method in Calendar's code base.
2. switch to Settings app and then do `mozTime.set()` to set system clock.

Do you have another good idea to fix the issue?
Thanks.
Flags: needinfo?(bugmail)
I think messing with the actual system clock is a recipe for trouble assuming you can do it at all.  (:gaye and :millermedeiros and I talked about this briefly and I think I was suggesting that even if we used https://developer.mozilla.org/en-US/docs/WebAPI/Time_and_Clock it's still quite possible that paravirtualized/jail-type executions will refuse to pretend the time is anything other than what the enclosing system's clock is.)

The e-mail back-end already has the ability to pretend the current time is something other than what it really is.  Which mainly leaves the e-mail UI which uses shared/js/l10n_date.js's non-standard fromNow method.  We could probably teach l10n_date.js:prettyDate() to lie and use a fake time instead of its use of Date.now().  We could then add a helper in shared/test/integration to executeScript to force that time to be set.

If we wanted to get super-fancy, we could augment one of our existing Marionette plugins to have an event emitter going on so we could do something like:

  client.helper.on('timewarp', function(timeSinceEpochMillis) {
    // I am doing my own test specific logic here; maybe l10n_date helper would too...
  });

  client.helper.emit('timewarp', new Date('Party like it is 1999 and this parses okay!'));

Otherwise each app could handle messing with its own time and making the call to the l10n_date.js helper as it chooses.
Flags: needinfo?(bugmail)
as I said on the [meta] bug (https://bugzilla.mozilla.org/show_bug.cgi?id=984726#c16), I think this kind of test is a bad idea. Specially for an app like calendar where the date affects the layout so much, and also since we will be constantly making incremental improvements to the design.

PS: I was talking with Gareth some time ago about asking the system guys for a way to actually change the clock/date value from inside the marionette tests (specially to test notifications/alarms), similar to `sinon.useFakeTimers()`. Not sure if he created an issue for it already.
Hi Miller,

Got you.
We would not do the reference test for Calendar app.

But we could capture screenshots on an pot-in basis for apps, just like Andrew said. Refer to http://bugzil.la/984726.
Status: ASSIGNED → RESOLVED
Closed: 10 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: