chrome.cast.media definition tests

This commit is contained in:
hensm
2018-06-12 02:54:16 +01:00
parent c8dc192f19
commit 26e2381182
6 changed files with 140 additions and 8 deletions

1
.gitignore vendored
View File

@@ -2,3 +2,4 @@ node_modules/
dist/
app/node_modules/
ext/node_modules/
test/ChromeProfile/

View File

@@ -26,11 +26,10 @@ Only tested on Linux. mDNS library issue to be fixed. `mdns` only works on Windo
### Instructions
````
````sh
git clone https://github.com/hensm/caster.git
npm install
npm run build
npm test
````
Installer scripts aren't written yet, so registering the native messaging manifest with Firefox and specifiying the path must be done manually:
@@ -39,6 +38,19 @@ Installer scripts aren't written yet, so registering the native messaging manife
`path` key within `app/caster_bridge.json` must be set to absolute path of `app/src/launcher.sh` or `app/src/launcher.bat`. Then, the manifest must be either moved to the correct location or the path added to the registry (Windows):
[MDN: Native Manifests # Manifest location](https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Native_manifests#Manifest_location)
### Testing
Testing requires geckodriver (or chromedriver for Chrome parity testing). See [selenium-webdriver](https://www.npmjs.com/package/selenium-webdriver#installation) installation instructions (ignore `npm install`).
Chrome doesn't load the media router in a temporary selenium profile, so there's a bundled profile (`test/ChromeProfile.zip`). Extract the folder within as `test/ChromeProfile/`.
````sh
npm run build
npm test
SELENIUM_BROWSER=chrome npm test
````
## Usage
Extension can be loaded from `about:debugging` as a temporary extension.

View File

@@ -4,7 +4,6 @@
"postinstall:app": "npm install ./app --prefix ./app",
"postinstall:ext": "npm install ./ext --prefix ./ext",
"build": "npm run build --prefix ./ext",
"pretest": "npm run build",
"test": "jasmine --config=jasmine.json"
},
"devDependencies": {

BIN
test/ChromeProfile.zip Normal file

Binary file not shown.

View File

@@ -17,7 +17,7 @@ const firefoxOptions = new firefox.Options()
const chromeOptions = new chrome.Options()
.excludeSwitches("disable-default-apps")
.addArguments(
"--load-media-router-component-extension");
`--user-data-dir=${path.resolve(__dirname, "ChromeProfile")}`);
async function create () {

View File

@@ -14,7 +14,7 @@ describe("chrome", () => {
});
it("should exist", async () => {
it("should exist", () => {
expect(chrome).toBeDefined();
expect(chrome.cast).toBeDefined();
expect(chrome.cast.media).toBeDefined();
@@ -22,7 +22,7 @@ describe("chrome", () => {
describe("chrome.cast", () => {
it("should have all api functions", async () => {
it("should have all api methods", () => {
expect(chrome.cast.addReceiverActionListener).toBeDefined();
expect(chrome.cast.initialize).toBeDefined();
expect(chrome.cast.logMessage).toBeDefined();
@@ -36,7 +36,7 @@ describe("chrome", () => {
expect(chrome.cast.unescape).toBeDefined();
});
it("should have all api classes", async () => {
it("should have all api classes", () => {
expect(chrome.cast.ApiConfig).toBeDefined();
expect(chrome.cast.DialRequest).toBeDefined();
expect(chrome.cast.Error).toBeDefined();
@@ -50,7 +50,7 @@ describe("chrome", () => {
expect(chrome.cast.Volume).toBeDefined();
});
it("should have all api enums", async () => {
it("should have all api enums", () => {
expect(chrome.cast.AutoJoinPolicy).toEqual(jasmine.objectContaining({
CUSTOM_CONTROLLER_SCOPED: "custom_controller_scoped"
, TAB_AND_ORIGIN_SCOPED: "tab_and_origin_scoped"
@@ -128,6 +128,126 @@ describe("chrome", () => {
});
describe("chrome.cast.media", () => {
it ("should have all api classes", () => {
expect(chrome.cast.media.EditTracksInfoRequest).toBeDefined();
expect(chrome.cast.media.GenericMediaMetadata).toBeDefined();
expect(chrome.cast.media.GetStatusRequest).toBeDefined();
expect(chrome.cast.media.LoadRequest).toBeDefined();
expect(chrome.cast.media.Media).toBeDefined();
expect(chrome.cast.media.MediaInfo).toBeDefined();
expect(chrome.cast.media.MovieMediaMetadata).toBeDefined();
expect(chrome.cast.media.MusicTrackMediaMetadata).toBeDefined();
expect(chrome.cast.media.PauseRequest).toBeDefined();
expect(chrome.cast.media.PhotoMediaMetadata).toBeDefined();
expect(chrome.cast.media.PlayRequest).toBeDefined();
expect(chrome.cast.media.QueueInsertItemsRequest).toBeDefined();
expect(chrome.cast.media.QueueItem).toBeDefined();
expect(chrome.cast.media.QueueLoadRequest).toBeDefined();
expect(chrome.cast.media.QueueRemoveItemsRequest).toBeDefined();
expect(chrome.cast.media.QueueReorderItemsRequest).toBeDefined();
expect(chrome.cast.media.QueueUpdateItemsRequest).toBeDefined();
expect(chrome.cast.media.SeekRequest).toBeDefined();
expect(chrome.cast.media.StopRequest).toBeDefined();
expect(chrome.cast.media.TextTrackStyle).toBeDefined();
expect(chrome.cast.media.Track).toBeDefined();
expect(chrome.cast.media.TvShowMediaMetadata).toBeDefined();
expect(chrome.cast.media.VolumeRequest).toBeDefined();
});
it ("should have all api enums", () => {
expect(chrome.cast.media.IdleReason).toEqual(jasmine.objectContaining({
CANCELLED: "CANCELLED"
, INTERRUPTED: "INTERRUPTED"
, FINISHED: "FINISHED"
, ERROR: "ERROR"
}));
expect(chrome.cast.media.MediaCommand).toEqual(jasmine.objectContaining({
PAUSE: "pause"
, SEEK: "seek"
, STREAM_VOLUME: "stream_volume"
, STREAM_MUTE: "stream_mute"
}));
expect(chrome.cast.media.MetadataType).toEqual(jasmine.objectContaining({
GENERIC: 0
, MOVIE: 1
, TV_SHOW: 2
, MUSIC_TRACK: 3
, PHOTO: 4
}));
expect(chrome.cast.media.PlayerState).toEqual(jasmine.objectContaining({
IDLE: "IDLE"
, PLAYING: "PLAYING"
, PAUSED: "PAUSED"
, BUFFERING: "BUFFERING"
}));
expect(chrome.cast.media.RepeatMode).toEqual(jasmine.objectContaining({
OFF: "REPEAT_OFF"
, ALL: "REPEAT_ALL"
, SINGLE: "REPEAT_SINGLE"
, ALL_AND_SHUFFLE: "REPEAT_ALL_AND_SHUFFLE"
}));
expect(chrome.cast.media.ResumeState).toEqual(jasmine.objectContaining({
PLAYBACK_START: "PLAYBACK_START"
, PLAYBACK_PAUSE: "PLAYBACK_PAUSE"
}));
expect(chrome.cast.media.StreamType).toEqual(jasmine.objectContaining({
BUFFERED: "BUFFERED"
, LIVE: "LIVE"
, OTHER: "OTHER"
}));
expect(chrome.cast.media.TextTrackEdgeType).toEqual(jasmine.objectContaining({
NONE: "NONE"
, OUTLINE: "OUTLINE"
, DROP_SHADOW: "DROP_SHADOW"
, RAISED: "RAISED"
, DEPRESSED: "DEPRESSED"
}));
expect(chrome.cast.media.TextTrackFontGenericFamily).toEqual(jasmine.objectContaining({
SANS_SERIF: "SANS_SERIF"
, MONOSPACED_SANS_SERIF: "MONOSPACED_SANS_SERIF"
, SERIF: "SERIF"
, MONOSPACED_SERIF: "MONOSPACED_SERIF"
, CASUAL: "CASUAL"
, CURSIVE: "CURSIVE"
, SMALL_CAPITALS: "SMALL_CAPITALS"
}));
expect(chrome.cast.media.TextTrackFontStyle).toEqual(jasmine.objectContaining({
NORMAL: "NORMAL"
, BOLD: "BOLD"
, BOLD_ITALIC: "BOLD_ITALIC"
, ITALIC: "ITALIC"
}));
expect(chrome.cast.media.TextTrackType).toEqual(jasmine.objectContaining({
SUBTITLES: "SUBTITLES"
, CAPTIONS: "CAPTIONS"
, DESCRIPTIONS: "DESCRIPTIONS"
, CHAPTERS: "CHAPTERS"
, METADATA: "METADATA"
}));
expect(chrome.cast.media.TextTrackWindowType).toEqual(jasmine.objectContaining({
NONE: "NONE"
, NORMAL: "NORMAL"
, ROUNDED_CORNERS: "ROUNDED_CORNERS"
}));
expect(chrome.cast.media.TrackType).toEqual(jasmine.objectContaining({
TEXT: "TEXT"
, AUDIO: "AUDIO"
, VIDEO: "VIDEO"
}));
});
describe("chrome.cast.media.timeout", () => {
it ("should have all properties", () => {
expect(chrome.cast.media.timeout.editTracksInfo).toBe(0);
expect(chrome.cast.media.timeout.getStatus).toBe(0);
expect(chrome.cast.media.timeout.load).toBe(0);
expect(chrome.cast.media.timeout.pause).toBe(0);
expect(chrome.cast.media.timeout.play).toBe(0);
expect(chrome.cast.media.timeout.queue).toBe(0);
expect(chrome.cast.media.timeout.seek).toBe(0);
expect(chrome.cast.media.timeout.setVolume).toBe(0);
expect(chrome.cast.media.timeout.stop).toBe(0);
})
});
});
});