mirror of
https://github.com/penpot/penpot.git
synced 2025-05-28 11:16:11 +02:00
👷 e2e tests for dashboard
Including test for signing/singup, projects, files, teams, and misc
This commit is contained in:
parent
26e5d57ced
commit
5103624fe0
32 changed files with 1285 additions and 127 deletions
|
@ -237,7 +237,7 @@
|
|||
(mf/defc register-validate-page
|
||||
[{:keys [params] :as props}]
|
||||
[:div.form-container
|
||||
[:h1 (tr "auth.register-title")]
|
||||
[:h1 {:data-test "register-title"} (tr "auth.register-title")]
|
||||
[:div.subtitle (tr "auth.register-subtitle")]
|
||||
|
||||
[:& register-validate-form {:params params}]
|
||||
|
|
|
@ -101,7 +101,7 @@
|
|||
[:span i/arrow-slide]
|
||||
parent-option]]
|
||||
[:li.separator]])
|
||||
(for [[index [option-name option-handler sub-options]] (d/enumerate (:options level))]
|
||||
(for [[index [option-name option-handler sub-options data-test]] (d/enumerate (:options level))]
|
||||
(when option-name
|
||||
(if (= option-name :separator)
|
||||
[:li.separator]
|
||||
|
@ -111,12 +111,14 @@
|
|||
(if-not sub-options
|
||||
[:a.context-menu-action {:on-click #(do (dom/stop-propagation %)
|
||||
(on-close)
|
||||
(option-handler %))}
|
||||
(option-handler %))
|
||||
:data-test data-test}
|
||||
(if (and in-dashboard? (= option-name "Default"))
|
||||
(tr "dashboard.default-team-name")
|
||||
option-name)]
|
||||
[:a.context-menu-action.submenu
|
||||
{:data-no-close true
|
||||
:on-click (enter-submenu option-name sub-options)}
|
||||
:on-click (enter-submenu option-name sub-options)
|
||||
:data-test data-test}
|
||||
option-name
|
||||
[:span i/arrow-slide]])])))])]])))
|
||||
|
|
|
@ -55,6 +55,7 @@
|
|||
[:div.dashboard-comments-section
|
||||
[:div.button
|
||||
{:on-click show-dropdown
|
||||
:data-test "open-comments"
|
||||
:class (dom/classnames :open @show-dropdown?
|
||||
:unread (boolean (seq tgroups)))}
|
||||
i/chat]
|
||||
|
|
|
@ -203,27 +203,28 @@
|
|||
(for [sub-project (:projects team)]
|
||||
[(get-project-name sub-project)
|
||||
(on-move (:id team)
|
||||
(:id sub-project))])])]))
|
||||
(:id sub-project))])])
|
||||
"move-to-other-team"]))
|
||||
|
||||
options (if multi?
|
||||
[[(tr "dashboard.duplicate-multi" file-count) on-duplicate]
|
||||
[[(tr "dashboard.duplicate-multi" file-count) on-duplicate nil "duplicate-multi"]
|
||||
(when (or (seq current-projects) (seq other-teams))
|
||||
[(tr "dashboard.move-to-multi" file-count) nil sub-options])
|
||||
[(tr "dashboard.move-to-multi" file-count) nil sub-options "move-to-multi"])
|
||||
[(tr "dashboard.export-multi" file-count) on-export-files]
|
||||
[:separator]
|
||||
[(tr "labels.delete-multi-files" file-count) on-delete]]
|
||||
[(tr "labels.delete-multi-files" file-count) on-delete nil "delete-multi-files"]]
|
||||
|
||||
[[(tr "dashboard.open-in-new-tab") on-new-tab]
|
||||
[(tr "labels.rename") on-edit]
|
||||
[(tr "dashboard.duplicate") on-duplicate]
|
||||
[(tr "labels.rename") on-edit nil "file-rename"]
|
||||
[(tr "dashboard.duplicate") on-duplicate nil "file-duplicate"]
|
||||
(when (or (seq current-projects) (seq other-teams))
|
||||
[(tr "dashboard.move-to") nil sub-options])
|
||||
[(tr "dashboard.move-to") nil sub-options "file-move-to"])
|
||||
(if (:is-shared file)
|
||||
[(tr "dashboard.remove-shared") on-del-shared]
|
||||
[(tr "dashboard.add-shared") on-add-shared])
|
||||
[(tr "dashboard.export-single") on-export-files]
|
||||
[(tr "dashboard.remove-shared") on-del-shared nil "file-del-shared"]
|
||||
[(tr "dashboard.add-shared") on-add-shared nil "file-add-shared"])
|
||||
[(tr "dashboard.export-single") on-export-files nil "file-export"]
|
||||
[:separator]
|
||||
[(tr "labels.delete") on-delete]])]
|
||||
[(tr "labels.delete") on-delete nil "file-delete"]])]
|
||||
|
||||
[:& context-menu {:on-close on-menu-close
|
||||
:show show?
|
||||
|
|
|
@ -70,7 +70,7 @@
|
|||
(with-meta {::ev/origin "project"}))))
|
||||
(swap! local assoc :edition false)))}]
|
||||
[:div.dashboard-title
|
||||
[:h1 {:on-double-click on-edit}
|
||||
[:h1 {:on-double-click on-edit :data-test "project-title"}
|
||||
(:name project)]]))
|
||||
|
||||
[:& project-menu {:project project
|
||||
|
@ -82,7 +82,7 @@
|
|||
:on-import on-import}]
|
||||
|
||||
[:div.dashboard-header-actions
|
||||
[:a.btn-secondary.btn-small {:on-click on-create-clicked}
|
||||
[:a.btn-secondary.btn-small {:on-click on-create-clicked :data-test "new-file"}
|
||||
(tr "dashboard.new-file")]
|
||||
|
||||
(when-not (:is-default project)
|
||||
|
|
|
@ -149,10 +149,10 @@
|
|||
[:span (tr "dashboard.fonts.fonts-added" (i18n/c (count (vals @fonts))))]
|
||||
[:div.table-field.options
|
||||
[:div.btn-primary
|
||||
{:on-click #(on-upload-all (vals @fonts))}
|
||||
{:on-click #(on-upload-all (vals @fonts)) :data-test "upload-all"}
|
||||
[:span (tr "dashboard.fonts.upload-all")]]
|
||||
[:div.btn-secondary
|
||||
{:on-click #(on-dismiss-all (vals @fonts))}
|
||||
{:on-click #(on-dismiss-all (vals @fonts)) :data-test "dismiss-all"}
|
||||
[:span (tr "dashboard.fonts.dismiss-all")]]]])
|
||||
|
||||
(for [item (sort-by :font-family (vals @fonts))]
|
||||
|
@ -277,8 +277,8 @@
|
|||
:fixed? false
|
||||
:top -15
|
||||
:left -115
|
||||
:options [[(tr "labels.edit") #(reset! edit? true)]
|
||||
[(tr "labels.delete") on-delete]]}]])]))
|
||||
:options [[(tr "labels.edit") #(reset! edit? true) nil "font-edit"]
|
||||
[(tr "labels.delete") on-delete nil "font-delete"]]}]])]))
|
||||
|
||||
|
||||
(mf/defc installed-fonts
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
[potok.core :as ptk]
|
||||
[rumext.alpha :as mf]))
|
||||
|
||||
(log/set-level! :warn)
|
||||
(log/set-level! :debug)
|
||||
|
||||
(def ^:const emit-delay 1000)
|
||||
|
||||
|
|
|
@ -108,19 +108,20 @@
|
|||
:top top
|
||||
:left left
|
||||
:options [(when-not (:is-default project)
|
||||
[(tr "labels.rename") on-edit])
|
||||
[(tr "labels.rename") on-edit nil "project-rename"])
|
||||
(when-not (:is-default project)
|
||||
[(tr "dashboard.duplicate") on-duplicate])
|
||||
[(tr "dashboard.duplicate") on-duplicate nil "project-duplicate"])
|
||||
(when-not (:is-default project)
|
||||
[(tr "dashboard.pin-unpin") toggle-pin])
|
||||
(when (and (seq teams) (not (:is-default project)))
|
||||
[(tr "dashboard.move-to") nil
|
||||
(for [team teams]
|
||||
[(:name team) (on-move (:id team))])])
|
||||
[(:name team) (on-move (:id team))])
|
||||
"project-move-to"])
|
||||
(when (some? on-import)
|
||||
[(tr "dashboard.import") on-import-files])
|
||||
[(tr "dashboard.import") on-import-files nil "file-import"])
|
||||
(when-not (:is-default project)
|
||||
[:separator])
|
||||
(when-not (:is-default project)
|
||||
[(tr "labels.delete") on-delete])]}]]))
|
||||
[(tr "labels.delete") on-delete nil "project-delete"])]}]]))
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
[:div.dashboard-title
|
||||
[:h1 (tr "dashboard.projects-title")]]
|
||||
|
||||
[:a.btn-secondary.btn-small {:on-click create}
|
||||
[:a.btn-secondary.btn-small {:on-click create :data-test "new-project-button"}
|
||||
(tr "dashboard.new-project")]]))
|
||||
|
||||
(mf/defc project-item
|
||||
|
@ -140,11 +140,11 @@
|
|||
i/pin)])
|
||||
|
||||
[:a.btn-secondary.btn-small.tooltip.tooltip-bottom
|
||||
{:on-click create-file :alt (tr "dashboard.new-file")}
|
||||
{:on-click create-file :alt (tr "dashboard.new-file") :data-test "project-new-file"}
|
||||
i/close]
|
||||
|
||||
[:a.btn-secondary.btn-small.tooltip.tooltip-bottom
|
||||
{:on-click on-menu-click :alt (tr "dashboard.options")}
|
||||
{:on-click on-menu-click :alt (tr "dashboard.options") :data-test "project-options"}
|
||||
i/actions]]
|
||||
|
||||
[:& line-grid
|
||||
|
|
|
@ -221,7 +221,7 @@
|
|||
[:span.team-text {:title (:name team)} (:name team)]]])
|
||||
|
||||
[:hr]
|
||||
[:li.action {:on-click on-create-clicked}
|
||||
[:li.action {:on-click on-create-clicked :data-test "create-new-team"}
|
||||
(tr "dashboard.create-new-team")]]))
|
||||
|
||||
(s/def ::member-id ::us/uuid)
|
||||
|
@ -349,21 +349,21 @@
|
|||
:on-accept delete-fn}))]
|
||||
|
||||
[:ul.dropdown.options-dropdown
|
||||
[:li {:on-click go-members} (tr "labels.members")]
|
||||
[:li {:on-click go-settings} (tr "labels.settings")]
|
||||
[:li {:on-click go-members :data-test "team-members"} (tr "labels.members")]
|
||||
[:li {:on-click go-settings :data-test "team-settings"} (tr "labels.settings")]
|
||||
[:hr]
|
||||
[:li {:on-click on-rename-clicked} (tr "labels.rename")]
|
||||
[:li {:on-click on-rename-clicked :data-test "rename-team"} (tr "labels.rename")]
|
||||
|
||||
(cond
|
||||
(get-in team [:permissions :is-owner])
|
||||
[:li {:on-click on-leave-as-owner-clicked} (tr "dashboard.leave-team")]
|
||||
[:li {:on-click on-leave-as-owner-clicked :data-test "leave-team"} (tr "dashboard.leave-team")]
|
||||
|
||||
(> (count members) 1)
|
||||
[:li {:on-click on-leave-clicked} (tr "dashboard.leave-team")])
|
||||
|
||||
|
||||
(when (get-in team [:permissions :is-owner])
|
||||
[:li {:on-click on-delete-clicked} (tr "dashboard.delete-team")])]))
|
||||
[:li {:on-click on-delete-clicked :data-test "delete-team"} (tr "dashboard.delete-team")])]))
|
||||
|
||||
|
||||
(mf/defc sidebar-team-switch
|
||||
|
@ -466,13 +466,14 @@
|
|||
|
||||
[:div.sidebar-content-section
|
||||
[:ul.sidebar-nav.no-overflow
|
||||
[:li.recent-projects
|
||||
[:li
|
||||
{:on-click go-fonts
|
||||
:data-test "fonts"
|
||||
:class-name (when fonts? "current")}
|
||||
[:span.element-title (tr "labels.fonts")]]]]
|
||||
|
||||
[:hr]
|
||||
[:div.sidebar-content-section
|
||||
[:div.sidebar-content-section {:data-test "pinned-projects"}
|
||||
(if (seq pinned-projects)
|
||||
[:ul.sidebar-nav
|
||||
(for [item pinned-projects]
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
[:a {:on-click go-settings} (tr "labels.settings")]]]]
|
||||
|
||||
(if (and members-section? (:is-admin permissions))
|
||||
[:a.btn-secondary.btn-small {:on-click invite-member}
|
||||
[:a.btn-secondary.btn-small {:on-click invite-member :data-test "invite-member"}
|
||||
(tr "dashboard.invite-profile")]
|
||||
[:div])]))
|
||||
|
||||
|
|
|
@ -51,7 +51,7 @@
|
|||
[:h2 (tr "onboarding.choice.fly-solo")]
|
||||
[:p (tr "onboarding.choice.fly-solo-desc")]]]
|
||||
[:div.modal-right
|
||||
[:div.content-button {:on-click on-team-up}
|
||||
[:div.content-button {:on-click on-team-up :data-test "team-up-button"}
|
||||
[:h2 (tr "onboarding.choice.team-up")]
|
||||
[:p (tr "onboarding.choice.team-up-desc")]]]]
|
||||
[:img.deco {:src "images/deco-left.png" :border "0"}]
|
||||
|
@ -72,7 +72,7 @@
|
|||
[:div.modal-overlay
|
||||
[:div.modal-container.onboarding-team
|
||||
[:div.title
|
||||
[:h2 (tr "onboarding.choice.team-up")]
|
||||
[:h2 {:data-test "onboarding-choice-team-up"} (tr "onboarding.choice.team-up")]
|
||||
[:p (tr "onboarding.choice.team-up-desc")]]
|
||||
|
||||
[:& fm/form {:form form
|
||||
|
|
|
@ -74,7 +74,7 @@
|
|||
:data-test "close-templates-btn"} i/close]]
|
||||
|
||||
[:div.modal-content
|
||||
[:h3 (tr "onboarding.templates.title")]
|
||||
[:h3 {:data-test "onboarding-templates-title"} (tr "onboarding.templates.title")]
|
||||
[:p (tr "onboarding.templates.subtitle")]
|
||||
|
||||
[:div.templates
|
||||
|
|
|
@ -87,7 +87,7 @@
|
|||
|
||||
[:hr]
|
||||
|
||||
[:li {:on-click show-release-notes}
|
||||
[:li {:on-click show-release-notes :data-test "release-notes"}
|
||||
i/pencil
|
||||
[:span.element-title (tr "labels.release-notes")]]
|
||||
|
||||
|
|
|
@ -75,17 +75,20 @@
|
|||
[:li.tooltip.tooltip-right
|
||||
{:alt (tr "workspace.toolbar.frame" (sc/get-tooltip :draw-frame))
|
||||
:class (when (= selected-drawtool :frame) "selected")
|
||||
:on-click (partial select-drawtool :frame)}
|
||||
:on-click (partial select-drawtool :frame)
|
||||
:data-test "artboard-btn"}
|
||||
i/artboard]
|
||||
[:li.tooltip.tooltip-right
|
||||
{:alt (tr "workspace.toolbar.rect" (sc/get-tooltip :draw-rect))
|
||||
:class (when (= selected-drawtool :rect) "selected")
|
||||
:on-click (partial select-drawtool :rect)}
|
||||
:on-click (partial select-drawtool :rect)
|
||||
:data-test "rect-btn"}
|
||||
i/box]
|
||||
[:li.tooltip.tooltip-right
|
||||
{:alt (tr "workspace.toolbar.ellipse" (sc/get-tooltip :draw-ellipse))
|
||||
:class (when (= selected-drawtool :circle) "selected")
|
||||
:on-click (partial select-drawtool :circle)}
|
||||
:on-click (partial select-drawtool :circle)
|
||||
:data-test "ellipse-btn"}
|
||||
i/circle]
|
||||
[:li.tooltip.tooltip-right
|
||||
{:alt (tr "workspace.toolbar.text" (sc/get-tooltip :draw-text))
|
||||
|
@ -98,12 +101,14 @@
|
|||
[:li.tooltip.tooltip-right
|
||||
{:alt (tr "workspace.toolbar.curve" (sc/get-tooltip :draw-curve))
|
||||
:class (when (= selected-drawtool :curve) "selected")
|
||||
:on-click (partial select-drawtool :curve)}
|
||||
:on-click (partial select-drawtool :curve)
|
||||
:data-test "curve-btn"}
|
||||
i/pencil]
|
||||
[:li.tooltip.tooltip-right
|
||||
{:alt (tr "workspace.toolbar.path" (sc/get-tooltip :draw-path))
|
||||
:class (when (= selected-drawtool :path) "selected")
|
||||
:on-click (partial select-drawtool :path)}
|
||||
:on-click (partial select-drawtool :path)
|
||||
:data-test "path-btn"}
|
||||
i/pen]
|
||||
|
||||
[:li.tooltip.tooltip-right
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue