diff options
-rw-r--r-- | app/assets/stylesheets/framework/markdown_area.scss | 11 | ||||
-rw-r--r-- | changelogs/unreleased/fix-overflow-slash-commands.yml | 4 | ||||
-rw-r--r-- | config/karma.config.js | 1 | ||||
-rw-r--r-- | spec/features/boards/boards_spec.rb | 8 | ||||
-rw-r--r-- | spec/features/milestones/milestones_spec.rb | 102 | ||||
-rw-r--r-- | spec/javascripts/project_title_spec.js | 76 | ||||
-rw-r--r-- | spec/javascripts/test_bundle.js | 8 |
7 files changed, 68 insertions, 142 deletions
diff --git a/app/assets/stylesheets/framework/markdown_area.scss b/app/assets/stylesheets/framework/markdown_area.scss index 80691a234f8..b21bcc22a87 100644 --- a/app/assets/stylesheets/framework/markdown_area.scss +++ b/app/assets/stylesheets/framework/markdown_area.scss @@ -174,3 +174,14 @@ white-space: nowrap; } } + +@media(max-width: $screen-xs-max) { + .atwho-view-ul { + width: 350px; + } + + .atwho-view ul li { + overflow: hidden; + text-overflow: ellipsis; + } +} diff --git a/changelogs/unreleased/fix-overflow-slash-commands.yml b/changelogs/unreleased/fix-overflow-slash-commands.yml new file mode 100644 index 00000000000..98ec399e8cb --- /dev/null +++ b/changelogs/unreleased/fix-overflow-slash-commands.yml @@ -0,0 +1,4 @@ +--- +title: Fixed overflow on mobile screens for the slash commands +merge_request: +author: diff --git a/config/karma.config.js b/config/karma.config.js index 978850e5d70..5911a9a7e10 100644 --- a/config/karma.config.js +++ b/config/karma.config.js @@ -54,6 +54,7 @@ module.exports = function(config) { subdir: '.', fixWebpackSourcePaths: true }; + karmaConfig.browserNoActivityTimeout = 60000; // 60 seconds } if (process.env.DEBUG) { diff --git a/spec/features/boards/boards_spec.rb b/spec/features/boards/boards_spec.rb index 968cc9d9c80..ce0702072eb 100644 --- a/spec/features/boards/boards_spec.rb +++ b/spec/features/boards/boards_spec.rb @@ -247,13 +247,13 @@ describe 'Issue Boards', feature: true, js: true do end it 'issue moves from closed' do - drag(list_from_index: 3, list_to_index: 2) + drag(list_from_index: 2, list_to_index: 3) wait_for_board_cards(2, 8) - wait_for_board_cards(3, 3) - wait_for_board_cards(4, 0) + wait_for_board_cards(3, 1) + wait_for_board_cards(4, 2) - expect(find('.board:nth-child(3)')).to have_content(issue8.title) + expect(find('.board:nth-child(4)')).to have_content(issue8.title) end context 'issue card' do diff --git a/spec/features/milestones/milestones_spec.rb b/spec/features/milestones/milestones_spec.rb deleted file mode 100644 index 9e117c8ed9f..00000000000 --- a/spec/features/milestones/milestones_spec.rb +++ /dev/null @@ -1,102 +0,0 @@ -# require 'rails_helper' - -# describe 'Milestone draggable', feature: true, js: true do -# include DragTo - -# let(:milestone) { create(:milestone, project: project, title: 8.14) } -# let(:project) { create(:empty_project, :public) } -# let(:user) { create(:user) } - -# context 'issues' do -# let(:issue) { page.find_by_id('issues-list-unassigned').find('li') } -# let(:issue_target) { page.find_by_id('issues-list-ongoing') } - -# it 'does not allow guest to drag issue' do -# create_and_drag_issue - -# expect(issue_target).not_to have_selector('.issuable-row') -# end - -# it 'does not allow authorized user to drag issue' do -# login_as(user) -# create_and_drag_issue - -# expect(issue_target).not_to have_selector('.issuable-row') -# end - -# it 'allows author to drag issue' do -# login_as(user) -# create_and_drag_issue(author: user) - -# expect(issue_target).to have_selector('.issuable-row') -# end - -# it 'allows admin to drag issue' do -# login_as(:admin) - -# create_and_drag_issue - -# expect(issue_target).to have_selector('.issuable-row') -# end -# end - -# context 'merge requests' do -# let(:merge_request) { page.find_by_id('merge_requests-list-unassigned').find('li') } -# let(:merge_request_target) { page.find_by_id('merge_requests-list-ongoing') } - -# it 'does not allow guest to drag merge request' do -# create_and_drag_merge_request - -# expect(merge_request_target).not_to have_selector('.issuable-row') -# end - -# it 'does not allow authorized user to drag merge request' do -# login_as(user) -# create_and_drag_merge_request - -# expect(merge_request_target).not_to have_selector('.issuable-row') -# end - -# it 'allows author to drag merge request' do -# login_as(user) -# create_and_drag_merge_request(author: user) - -# expect(merge_request_target).to have_selector('.issuable-row') -# end - -# it 'allows admin to drag merge request' do -# login_as(:admin) -# create_and_drag_merge_request - -# expect(merge_request_target).to have_selector('.issuable-row') -# end -# end - -# def create_and_drag_issue(params = {}) -# create(:issue, params.merge(title: 'Foo', project: project, milestone: milestone)) - -# visit namespace_project_milestone_path(project.namespace, project, milestone) -# scroll_into_view('.milestone-content') -# drag_to(selector: '.issues-sortable-list', list_to_index: 1) - -# wait_for_requests -# end - -# def create_and_drag_merge_request(params = {}) -# create(:merge_request, params.merge(title: 'Foo', source_project: project, target_project: project, milestone: milestone)) - -# visit namespace_project_milestone_path(project.namespace, project, milestone) -# page.find("a[href='#tab-merge-requests']").click - -# wait_for_requests - -# scroll_into_view('.milestone-content') -# drag_to(selector: '.merge_requests-sortable-list', list_to_index: 1) - -# wait_for_requests -# end - -# def scroll_into_view(selector) -# page.evaluate_script("document.querySelector('#{selector}').scrollIntoView();") -# end -# end diff --git a/spec/javascripts/project_title_spec.js b/spec/javascripts/project_title_spec.js index 3dba2e817ff..cc336180ff7 100644 --- a/spec/javascripts/project_title_spec.js +++ b/spec/javascripts/project_title_spec.js @@ -1,4 +1,3 @@ -/* eslint-disable space-before-function-paren, no-unused-expressions, no-return-assign, no-param-reassign, no-var, new-cap, wrap-iife, no-unused-vars, quotes, jasmine/no-expect-in-setup-teardown, max-len */ /* global Project */ import 'select2/select2'; @@ -7,47 +6,52 @@ import '~/api'; import '~/project_select'; import '~/project'; -(function() { - describe('Project Title', function() { - preloadFixtures('issues/open-issue.html.raw'); - loadJSONFixtures('projects.json'); +describe('Project Title', () => { + preloadFixtures('issues/open-issue.html.raw'); + loadJSONFixtures('projects.json'); - beforeEach(function() { - loadFixtures('issues/open-issue.html.raw'); + beforeEach(() => { + loadFixtures('issues/open-issue.html.raw'); - window.gon = {}; - window.gon.api_version = 'v3'; + window.gon = {}; + window.gon.api_version = 'v3'; - return this.project = new Project(); - }); + // eslint-disable-next-line no-new + new Project(); + }); - describe('project list', function() { - var fakeAjaxResponse = function fakeAjaxResponse(req) { - var d; - expect(req.url).toBe('/api/v3/projects.json?simple=true'); - expect(req.data).toEqual({ search: '', order_by: 'last_activity_at', per_page: 20, membership: true }); - d = $.Deferred(); - d.resolve(this.projects_data); - return d.promise(); - }; - - beforeEach((function(_this) { - return function() { - _this.projects_data = getJSONFixture('projects.json'); - return spyOn(jQuery, 'ajax').and.callFake(fakeAjaxResponse.bind(_this)); - }; - })(this)); - it('toggles dropdown', function() { - var menu = $('.js-dropdown-menu-projects'); - $('.js-projects-dropdown-toggle').click(); - expect(menu).toHaveClass('open'); - menu.find('.dropdown-menu-close-icon').click(); - expect(menu).not.toHaveClass('open'); + describe('project list', () => { + let reqUrl; + let reqData; + + beforeEach(() => { + const fakeResponseData = getJSONFixture('projects.json'); + spyOn(jQuery, 'ajax').and.callFake((req) => { + const def = $.Deferred(); + reqUrl = req.url; + reqData = req.data; + def.resolve(fakeResponseData); + return def.promise(); }); }); - afterEach(() => { - window.gon = {}; + it('toggles dropdown', () => { + const $menu = $('.js-dropdown-menu-projects'); + $('.js-projects-dropdown-toggle').click(); + expect($menu).toHaveClass('open'); + expect(reqUrl).toBe('/api/v3/projects.json?simple=true'); + expect(reqData).toEqual({ + search: '', + order_by: 'last_activity_at', + per_page: 20, + membership: true, + }); + $menu.find('.dropdown-menu-close-icon').click(); + expect($menu).not.toHaveClass('open'); }); }); -}).call(window); + + afterEach(() => { + window.gon = {}; + }); +}); diff --git a/spec/javascripts/test_bundle.js b/spec/javascripts/test_bundle.js index 2c34402576b..729db02e06c 100644 --- a/spec/javascripts/test_bundle.js +++ b/spec/javascripts/test_bundle.js @@ -16,6 +16,14 @@ window.gl = window.gl || {}; window.gl.TEST_HOST = 'http://test.host'; window.gon = window.gon || {}; +// HACK: Chrome 59 disconnects if there are too many synchronous tests in a row +// because it appears to lock up the thread that communicates to Karma's socket +// This async beforeEach gets called on every spec and releases the JS thread long +// enough for the socket to continue to communicate. +// The downside is that it creates a minor performance penalty in the time it takes +// to run our unit tests. +beforeEach(done => done()); // eslint-disable-line jasmine/no-global-setup + // render all of our tests const testsContext = require.context('.', true, /_spec$/); testsContext.keys().forEach(function (path) { |