| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| --> |
| |
| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <meta http-equiv="X-UA-Compatible" content="ie=edge"> |
| </head> |
| <body> |
| <div id="app" style="display: none"> |
| <iframe :src="url" id="test-view"></iframe> |
| <div id="recording-status"> |
| <el-button |
| :icon="recordingAction ? 'el-icon-video-camera' : 'el-icon-video-camera'" |
| class="recording-button" circle :type="recordingAction ? 'danger' : 'info'" |
| > |
| </el-button> |
| <div class="hint"><span class="emphasis">ALT + R</span>to {{recordingAction ? 'stop' : 'start'}} recording</div> |
| <div class="hint" v-if="recordingAction"><span class="emphasis">ALT + S</span>to take screenshot</div> |
| <div class="recording-time" v-if="recordingAction">{{(recordingTimeElapsed / 1000).toFixed(0)}} s</div> |
| </div> |
| <div id="actions"> |
| <el-card class="box-card"> |
| <div slot="header" class="clearfix"> |
| <span>Actions</span> |
| <div class="toolbar"> |
| <i style="font-size: 18px;cursor:pointer;" class="el-icon-refresh" title="Refresh Page" @click="refreshPage"></i> |
| <el-button type="primary" size="mini" icon="el-icon-caret-right" circle @click="run"></el-button> |
| <el-button type="primary" size="mini" icon="el-icon-circle-plus" @click="newAction">New</el-button> |
| |
| <el-popover title="Configuration" class="configuration"> |
| <div class="config-item"> |
| <el-checkbox v-model="config.screenshotAfterMouseUp">Auto screenshot after mouse up</el-checkbox> |
| </div> |
| <div class="config-item"> |
| <span>Delay</span> |
| <el-slider style="width: 180px;" v-model="config.screenshotDelay" :step="100" :max="2000"></el-slider> |
| </div> |
| <i slot="reference" class="el-icon-setting"></i> |
| </el-popover> |
| </div> |
| </div> |
| <div v-for="action in actions" :class="{'action-item': true, 'active': action.name === currentAction.name}" @click.self="select(action.name)"> |
| {{action.name}} |
| <div style="float:right" class="operations"> |
| <el-popover> |
| <div style="text-align: center">{ scrollX: {{action.scrollX}}, scrollY: {{action.scrollY}} }</div> |
| <div v-for="op in action.ops" style="text-align: center">{{op}}</div> |
| <div slot="reference"> |
| <span>Data ({{action.ops.length}})</span> |
| <i slot="reference" class="el-icon-caret-bottom"></i> |
| </div> |
| </el-popover> |
| <i class="el-icon-delete" @click="doDelete(action.name)"></i> |
| <i class="el-icon-refresh-left" @click="clearOps(action.name)"></i> |
| </div> |
| </div> |
| </el-card> |
| </div> |
| <div |
| id="tests-nav" |
| v-show="drawerVisible" |
| > |
| <ul> |
| <li v-for="test in tests"> |
| <a :href="'#' + test.name" :class="{active: test.name === currentTestName}"> |
| {{test.name}} |
| <i v-if="test.actions" class="el-icon-video-camera-solid"></i> |
| <span v-if="test.actions" style="font-size: 14px;">({{test.actions}})</span> |
| </a> |
| </li> |
| </ul> |
| <i class="el-icon-circle-close" @click="drawerVisible=false"></i> |
| </div> |
| <el-button icon="el-icon-menu" type="info" plain id="open-nav" @click="drawerVisible=true"></el-button> |
| </div> |
| |
| <script src="../../../node_modules/socket.io-client/dist/socket.io.js"></script> |
| <script src="https://unpkg.com/vue@2.6.10/dist/vue.js"></script> |
| |
| <!-- Element UI --> |
| <link rel="stylesheet" href="https://unpkg.com/element-ui@2.11.1/lib/theme-chalk/index.css"> |
| <script src="https://unpkg.com/element-ui@2.11.1/lib/index.js"></script> |
| <script src="https://unpkg.com/lodash@4.17.15/lodash.js"></script> |
| |
| <script src="recorder.js"></script> |
| |
| <link rel="stylesheet" href="recorder.css"> |
| |
| </body> |
| </html> |