量角器e2e测试fullcalendar拖拽&下降

时间:2016-05-18 14:12:31

标签: fullcalendar protractor

我需要模拟拖动和放大器使用量角器在周视图中放下fullcalendar。我找到了something的坐标,但我不喜欢"没有依赖浏览器窗口的解决方案" ...他们也没有办法找到本周的确切起始单元格按类别或ID查看...或者至少,我无法计算如何选择一天中某一行的单个单元格,因为使用Chrome的项目选择器,似乎每行都有相同的类fc-widget-content和单元格不可选择"元素。

还有其他机会吗?

1 个答案:

答案 0 :(得分:0)

也许这会有所帮助(也很晚;)。我也想用FullCalendar测试我的应用程序,但是我正在使用Cypress(类似于Protractor)。

我们从外部列表计划项目,并在特定的日期/时间将其分配到FullCalendar中的资源(我们使用调度程序插件)。

我发现dragdrop事件被代码以某种方式截获,例如通过事件的属性(例如日期,标题和其他)丰富了它。我如何丰富这些数据在Cypress trigger('drop', data)命令中。数据是Draggable类设置的evenData:

// Executed on the external list items, where every item we want to plan has class `.fc-event`.
this.draggableContainer = new Draggable(this.containerEl.nativeElement, {
        itemSelector: '.fc-event',
        eventData(eventEl) {
          const id = eventEl.dataset.id;

          return {
            duration,
            id: currentWorkItem.id,
            title: currentWorkItem.description,
            extendedProps: {
              duration,
              customRender: true,
              data: currentWorkItem,
            },
          };
        }

然后,在您的测试文件(赛普拉斯)中

const eventData = {
      date: new Date(),
      dateStr: new Date().toISOString(),
      draggedEl: {
        dataset: {
          notificationId: '123',
          priority: '0',
          title: 'Test',
        },
      },
      jsEvent: null,
      resource: {
        id: '123',
      },
      event: null,
      oldEvent: null,
    };

cy.get('.fc-event') // selector for the external event I want to drag in the calendar

      .trigger('dragstart')
      .get('.fc-time-grid table tr[data-time="07:00:00"] td.fc-widget-content:nth-child(2)') // selector for where I want to drop the event.
      .trigger('drop', eventData) // this will fire the eventDrop event

因此,.trigger('drop', eventData)将填写eventDrop信息。它与手动操作不完全相同,但对我有用。

注意事项:

  • 我还没有找到一种在另一个资源上进行计划的方法(我们使用FullCalendar.io的资源计划插件)。没关系,因为您可以在evenData(resource: { id: 'my-resource-id' } }中指定它。
  • 没有视觉反馈,因为未显示后视镜。在端到端测试期间,这不是一个大问题,但现在有点黑箱。也许这是可以解决的