小编Tie*_*udt的帖子

等待与量角器的离子加载对话框

有类似的问题(下面链接)但没有解决这个问题.我正在为一个离子项目编写量角器测试.当Ionic Loading对话框出现并消失时,我需要执行测试.

我已经用应用程序的骨干和需要进行的测试创建了一个repo.解决这个问题并解决问题(我在下面描述了这个问题):https://github.com/TmanTman/StackoverflowQ.只需在conf.js中调整适用于您系统的Chrome的路径即可.

要模拟异步离子加载对话框,我只需将其添加到空白离子项目中的控制器:

$interval( function() {
        $ionicLoading.show({
            template: 'Async ionicLoading',
            duration: 5000
        });
      }, 5000 , 1);
    })
Run Code Online (Sandbox Code Playgroud)

我需要让量角器等待对话框出现,做一些测试,等待对话框消失,然后再进行一些测试.我在测试文件中的最新尝试是:

it('should only test when ionicLoading appears', function() {
  browser.wait(function(){
    return element(by.css('.loading-container.visible.active')).isPresent();
  }, 10000);
  var ionicLoadingText = element(by.css('.loading-container.visible.active')).getText();
  expect(ionicLoadingText).toEqual('Async IonicLoading');
})



it('should only test once ionicLoading disappears', function() {
  browser.wait(function() {
    var deferred = protractor.promise.defer();
    var q = element(by.css('.loading-container.visible.active')).isPresent()
      q.then( function (isPresent) {
        deferred.fulfill(!isPresent);
      });
      return deferred.promise;
    });
  expect(1).toEqual(1);
})
Run Code Online (Sandbox Code Playgroud)

我试图避免使用同步睡眠功能,因为我的代码是高度异步的.我尝试了无数的变化,但我无法让它发挥作用.我用于信息的链接包括:

angularjs-e2e protractor ionic-framework ionic e2e-testing

10
推荐指数
1
解决办法
966
查看次数

在Cypress中关闭角度材料对话框

我正在使用Angular Material将Cypress添加到我的Angular 6项目中。材质对话框(包含iFrame)欢迎新用户,并通过在对话框外部单击来关闭对话框。

我试图以多种方式在赛普拉斯中关闭此对话框,并引入了等待和超时,以确保它与网络加载问题无关:

cy.get('dialog-element', { timeout: 10000})
.wait(3000).click(-50, -50);
Run Code Online (Sandbox Code Playgroud)

失败是因为它被cdk-overlay-container覆盖。使用click(...,{force:true})没有帮助。试过了

cy.get('.cdk-overlay-container', { timeout: 10000})
.wait(3000).click(-50, -50, { force: true });
Run Code Online (Sandbox Code Playgroud)

这也没有帮助。对话框不会关闭,连续单击不会起作用,即,尝试进行例如以下操作时,它始终会失败

cy.get('[data-cy=element-on-page-beneath-dialog]').click();
Run Code Online (Sandbox Code Playgroud)

进行调试时,我可以在对话框外部看到点击的红点,因此鼠标的位置不是问题。

编辑:根据要求,材质对话框HTML(注意宽度和高度足够小,因此对话框不会填满页面,但周围留有足够的空间,并且src具有真实的Youtube视频链接)

<div style="overflow: hidden;">
    <iframe style="margin-top: 2px; overflow: hidden;" [width]="videoWidth" [height]="videoHeight" src="..." frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
<div>
Run Code Online (Sandbox Code Playgroud)

angular cypress

5
推荐指数
1
解决办法
867
查看次数

浏览器 Javascript:将 Json 压缩为 gzip 并上传到 S3 预签名 URL

任何意见,将不胜感激。我的 Web 应用程序中有一个 json 变量,我想对其进行 gzip 压缩并通过预签名 URL 上传到 S3。

我能够成功上传 JSON,但无法对 JSON 进行 gzip 压缩然后上传。

我尝试构建 gzipped json 的三种不同方法是:

// example json
const someJson = { testOne: 'a', testTwo: 'b' };

// Attempt one
const stringUtf16 = JSON.stringify(someJson);
const resultAsBinString = pako.gzip(stringUtf16);

// Attempt two
const stringUtf16 = JSON.stringify(someJson);
const resultAsBinString = pako.gzip(stringUtf16, { to: 'string' });

// Attempt three
const stringUtf16ThatWeNeedInUtf8 = JSON.stringify(someJson);
const stringUtf8 = unescape(encodeURIComponent(stringUtf16ThatWeNeedInUtf8));
const resultAsBinString = pako.gzip(stringUtf8);
Run Code Online (Sandbox Code Playgroud)

对于每次尝试,我都通过 Angular 的 HTTP 客户端上传 resultAsBinString,标头为 Content-Type: …

javascript gzip amazon-s3 pako

5
推荐指数
2
解决办法
6912
查看次数

仅将工人dyno部署到heroku(用于Firebase队列)

我想在heroku的仅用于工作的dyno上部署NodeJS服务器。我尝试了几种方法,但总是会收到错误消息:

Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
Run Code Online (Sandbox Code Playgroud)

我的服务器不需要提供文件或API。部署到Heroku的正确方法是什么?具体来说,仅将Firebase-queue实现部署到Heroku的正确方法是什么?

我的服务器专用于处理队列中的工作。它监视Firebase的位置并对更改做出反应。具体来说,它是一个firebase-queue实现,几乎是指南中给出的my-queue-worker.js的精确副本。

var Queue = require('firebase-queue');
var firebase = require('firebase');

firebase.initializeApp({
  serviceAccount: '{projectId: 'xx', clientEmail: 'yy', privateKey: 'zz'}',
  databaseURL: '<your-database-url>'
});

var ref = firebase.database().ref('queue');
var queue = new Queue(ref, function(data, progress, resolve, reject) {
  // Read and process task data
  console.log(data);

 // Do some work
 progress(50);

 // Finish the task asynchronously
  setTimeout(function() {
  resolve();
  }, 1000);
});
Run Code Online (Sandbox Code Playgroud)

heroku node.js firebase firebase-queue

4
推荐指数
1
解决办法
782
查看次数