diff --git a/css/25_areas.css b/css/25_areas.css index 72f6fbfe4..e12f1f2cb 100644 --- a/css/25_areas.css +++ b/css/25_areas.css @@ -24,6 +24,7 @@ path.stroke.old-multipolygon { /* Green things */ path.stroke.tag-natural, +path.stroke.tag-natural-wood, path.stroke.tag-leisure-nature_reserve, path.stroke.tag-leisure-pitch, path.stroke.tag-leisure-track, @@ -32,12 +33,12 @@ path.stroke.tag-leisure-garden, path.stroke.tag-leisure-park, path.stroke.tag-landuse-recreation_ground, path.stroke.tag-landuse-forest, -path.stroke.tag-landuse-wood, path.stroke.tag-landuse-grass, path.stroke.tag-barrier-hedge { stroke: rgb(140, 208, 95); } path.fill.tag-natural, +path.fill.tag-natural-wood, path.fill.tag-leisure-nature_reserve, path.fill.tag-leisure-pitch, path.fill.tag-leisure-track, @@ -46,7 +47,6 @@ path.fill.tag-leisure-garden, path.fill.tag-leisure-park, path.fill.tag-landuse-recreation_ground, path.fill.tag-landuse-forest, -path.fill.tag-natural-wood, path.fill.tag-landuse-grass, path.fill.tag-barrier-hedge { stroke: rgba(140, 208, 95, 0.3); diff --git a/css/80_app.css b/css/80_app.css index d76c9a5e0..4d982dddd 100644 --- a/css/80_app.css +++ b/css/80_app.css @@ -1709,7 +1709,7 @@ button.preset-favorite-button.active .icon { } .form-field-input-multicombo ul.chiplist { - padding: 3px 10px 3px 10px; + padding: 5px 10px 5px 10px; background: #fff; display: block; border-radius: 0 0 4px 4px; diff --git a/data/deprecated.json b/data/deprecated.json index 5836f6c7d..b4a180759 100644 --- a/data/deprecated.json +++ b/data/deprecated.json @@ -359,14 +359,6 @@ "old": {"highway": "stile"}, "replace": {"barrier": "stile"} }, - { - "old": {"highway": "incline"}, - "replace": {"highway": "road", "incline": "up"} - }, - { - "old": {"highway": "incline_steep"}, - "replace": {"highway": "road", "incline": "up"} - }, { "old": {"highway": "unsurfaced"}, "replace": {"highway": "road", "surface": "unpaved"} @@ -463,6 +455,10 @@ "old": {"leisure": "video_arcade"}, "replace": {"leisure": "amusement_arcade"} }, + { + "old": {"leisure": "recreation_ground"}, + "replace": {"landuse": "recreation_ground"} + }, { "old": {"man_made": "cut_line"}, "replace": {"man_made": "cutline"} diff --git a/data/presets.yaml b/data/presets.yaml index ded436601..9d0b0c6a4 100644 --- a/data/presets.yaml +++ b/data/presets.yaml @@ -3083,7 +3083,7 @@ en: amenity/shelter/public_transport: # 'amenity=shelter, shelter_type=public_transport' name: Transit Shelter - # 'terms: bus stop,metro stop,waiting' + # 'terms: bus stop,metro stop,public transit shelter,public transport shelter,tram stop shelter,waiting' terms: '' amenity/shower: # amenity=shower diff --git a/data/presets/presets.json b/data/presets/presets.json index 705ee9225..2f61c2652 100644 --- a/data/presets/presets.json +++ b/data/presets/presets.json @@ -192,7 +192,7 @@ "amenity/shelter/gazebo": {"icon": "maki-shelter", "fields": ["name", "building_area", "bench", "lit"], "geometry": ["point", "area"], "tags": {"amenity": "shelter", "shelter_type": "gazebo"}, "name": "Gazebo"}, "amenity/shelter/lean_to": {"icon": "maki-shelter", "fields": ["name", "operator", "building_area"], "geometry": ["point", "area"], "tags": {"amenity": "shelter", "shelter_type": "lean_to"}, "name": "Lean-To"}, "amenity/shelter/picnic_shelter": {"icon": "maki-shelter", "fields": ["name", "shelter_type", "building_area", "lit", "bin"], "geometry": ["point", "area"], "tags": {"amenity": "shelter", "shelter_type": "picnic_shelter"}, "reference": {"key": "shelter_type", "value": "picnic_shelter"}, "terms": ["pavilion"], "name": "Picnic Shelter"}, - "amenity/shelter/public_transport": {"icon": "maki-shelter", "fields": ["name", "shelter_type", "building_area", "bench", "lit"], "geometry": ["point", "area"], "terms": ["bus stop", "metro stop", "waiting"], "tags": {"amenity": "shelter", "shelter_type": "public_transport"}, "reference": {"key": "shelter_type", "value": "public_transport"}, "name": "Transit Shelter"}, + "amenity/shelter/public_transport": {"icon": "maki-shelter", "fields": ["name", "shelter_type", "building_area", "bench", "lit"], "geometry": ["point", "area"], "terms": ["bus stop", "metro stop", "public transit shelter", "public transport shelter", "tram stop shelter", "waiting"], "tags": {"amenity": "shelter", "shelter_type": "public_transport"}, "reference": {"key": "shelter_type", "value": "public_transport"}, "name": "Transit Shelter"}, "amenity/shower": {"icon": "fas-shower", "fields": ["opening_hours", "access_simple", "fee", "payment_multi_fee", "supervised", "building_area", "wheelchair"], "moreFields": ["address", "operator", "gender"], "geometry": ["point", "vertex", "area"], "terms": ["rain closet"], "tags": {"amenity": "shower"}, "name": "Shower"}, "amenity/smoking_area": {"icon": "fas-smoking", "fields": ["name", "shelter", "bin", "bench", "opening_hours"], "moreFields": ["lit", "wheelchair", "covered"], "geometry": ["point", "vertex", "area"], "terms": [], "tags": {"amenity": "smoking_area"}, "name": "Smoking Area"}, "amenity/social_centre": {"icon": "fas-handshake", "fields": ["name", "operator", "address", "building_area"], "moreFields": ["air_conditioning", "email", "fax", "internet_access", "internet_access/fee", "internet_access/ssid", "phone", "website", "wheelchair"], "geometry": ["point", "area"], "terms": ["event", "fraternal", "fraternity", "hall", "organization", "professional", "society", "sorority", "union", "vetern"], "tags": {"amenity": "social_centre"}, "name": "Social Center"}, @@ -487,7 +487,7 @@ "highway/pedestrian_line": {"icon": "temaki-pedestrian", "fields": ["name", "surface", "lit", "width", "oneway", "structure", "access"], "moreFields": ["covered", "incline", "maxweight_bridge", "smoothness"], "geometry": ["line"], "tags": {"highway": "pedestrian"}, "terms": ["center", "centre", "plaza", "quad", "square", "walkway"], "name": "Pedestrian Street"}, "highway/primary_link": {"icon": "iD-highway-primary-link", "fields": ["destination_oneway", "destination/ref_oneway", "oneway", "maxspeed", "lanes", "surface", "structure", "access"], "moreFields": ["covered", "cycleway", "destination/symbol_oneway", "flood_prone", "incline", "junction/ref_oneway", "junction_line", "lit", "maxheight", "maxspeed/advisory", "maxweight_bridge", "name", "oneway/bicycle", "ref_road_number", "smoothness", "toll", "trolley_wire"], "geometry": ["line"], "tags": {"highway": "primary_link"}, "terms": ["on ramp", "off ramp", "ramp", "road", "street"], "name": "Primary Link"}, "highway/primary": {"icon": "iD-highway-primary", "fields": ["name", "oneway", "maxspeed", "lanes", "surface", "structure", "ref_road_number", "access"], "moreFields": ["covered", "cycleway", "flood_prone", "incline", "junction_line", "lit", "maxheight", "maxspeed/advisory", "maxweight_bridge", "oneway/bicycle", "smoothness", "toll", "trolley_wire"], "geometry": ["line"], "tags": {"highway": "primary"}, "terms": ["road", "street"], "name": "Primary Road"}, - "highway/raceway": {"icon": "iD-highway-unclassified", "fields": ["name", "oneway", "surface", "sport_racing_motor", "lit", "width", "lanes", "structure"], "geometry": ["point", "line", "area"], "tags": {"highway": "raceway"}, "addTags": {"highway": "raceway", "sport": "motor"}, "terms": ["auto*", "formula one", "kart", "motocross", "nascar", "race*", "track"], "name": "Racetrack (Motorsport)"}, + "highway/raceway": {"icon": "fas-flag-checkered", "fields": ["name", "oneway", "surface", "sport_racing_motor", "lit", "width", "lanes", "structure"], "geometry": ["point", "line", "area"], "tags": {"highway": "raceway"}, "addTags": {"highway": "raceway", "sport": "motor"}, "terms": ["auto*", "formula one", "kart", "motocross", "nascar", "race*", "track"], "name": "Racetrack (Motorsport)"}, "highway/residential": {"icon": "iD-highway-residential", "fields": ["name", "oneway", "maxspeed", "lanes", "surface", "structure", "access"], "moreFields": ["covered", "cycleway", "flood_prone", "incline", "junction_line", "lit", "oneway/bicycle", "maxheight", "maxspeed/advisory", "maxweight_bridge", "smoothness", "trolley_wire"], "geometry": ["line"], "tags": {"highway": "residential"}, "terms": ["road", "street"], "name": "Residential Road"}, "highway/rest_area": {"icon": "maki-car", "fields": ["name", "operator", "opening_hours"], "moreFields": ["address", "website", "phone", "email", "fax", "wheelchair"], "geometry": ["point", "vertex", "area"], "tags": {"highway": "rest_area"}, "terms": ["rest stop"], "name": "Rest Area"}, "highway/road": {"icon": "iD-other-line", "fields": ["highway", "{highway/residential}"], "moreFields": ["{highway/residential}"], "geometry": ["line"], "tags": {"highway": "road"}, "terms": ["road", "street"], "name": "Unknown Road"}, diff --git a/data/presets/presets/amenity/shelter/public_transport.json b/data/presets/presets/amenity/shelter/public_transport.json index e7ee477f8..0394719a1 100644 --- a/data/presets/presets/amenity/shelter/public_transport.json +++ b/data/presets/presets/amenity/shelter/public_transport.json @@ -14,6 +14,9 @@ "terms": [ "bus stop", "metro stop", + "public transit shelter", + "public transport shelter", + "tram stop shelter", "waiting" ], "tags": { diff --git a/data/presets/presets/highway/raceway.json b/data/presets/presets/highway/raceway.json index 1edf34525..d852db465 100644 --- a/data/presets/presets/highway/raceway.json +++ b/data/presets/presets/highway/raceway.json @@ -1,5 +1,5 @@ { - "icon": "iD-highway-unclassified", + "icon": "fas-flag-checkered", "fields": [ "name", "oneway", diff --git a/data/taginfo.json b/data/taginfo.json index 757358e97..6e638acda 100644 --- a/data/taginfo.json +++ b/data/taginfo.json @@ -468,7 +468,7 @@ {"key": "highway", "value": "pedestrian", "description": "🄿 Pedestrian Street", "object_types": ["way"], "icon_url": "https://raw.githubusercontent.com/bhousel/temaki/master/icons/pedestrian.svg?sanitize=true"}, {"key": "highway", "value": "primary_link", "description": "🄿 Primary Link", "object_types": ["way"], "icon_url": "https://raw.githubusercontent.com/openstreetmap/iD/master/svg/iD-sprite/presets/highway-primary-link.svg?sanitize=true"}, {"key": "highway", "value": "primary", "description": "🄿 Primary Road", "object_types": ["way"], "icon_url": "https://raw.githubusercontent.com/openstreetmap/iD/master/svg/iD-sprite/presets/highway-primary.svg?sanitize=true"}, - {"key": "highway", "value": "raceway", "description": "🄿 Racetrack (Motorsport)", "object_types": ["node", "way", "area"], "icon_url": "https://raw.githubusercontent.com/openstreetmap/iD/master/svg/iD-sprite/presets/highway-unclassified.svg?sanitize=true"}, + {"key": "highway", "value": "raceway", "description": "🄿 Racetrack (Motorsport)", "object_types": ["node", "way", "area"], "icon_url": "https://raw.githubusercontent.com/openstreetmap/iD/master/svg/fontawesome/fas-flag-checkered.svg?sanitize=true"}, {"key": "highway", "value": "residential", "description": "🄿 Residential Road", "object_types": ["way"], "icon_url": "https://raw.githubusercontent.com/openstreetmap/iD/master/svg/iD-sprite/presets/highway-residential.svg?sanitize=true"}, {"key": "highway", "value": "rest_area", "description": "🄿 Rest Area", "object_types": ["node", "area"], "icon_url": "https://raw.githubusercontent.com/mapbox/maki/master/icons/car-15.svg?sanitize=true"}, {"key": "highway", "value": "road", "description": "🄿 Unknown Road", "object_types": ["way"], "icon_url": "https://raw.githubusercontent.com/openstreetmap/iD/master/svg/iD-sprite/presets/other-line.svg?sanitize=true"}, @@ -1824,8 +1824,6 @@ {"key": "highway", "value": "no", "description": "🄳"}, {"key": "highway", "value": "platform", "description": "🄳 ➜ bus=yes + public_transport=platform"}, {"key": "highway", "value": "stile", "description": "🄳 ➜ barrier=stile"}, - {"key": "highway", "value": "incline", "description": "🄳 ➜ highway=road + incline=up"}, - {"key": "highway", "value": "incline_steep", "description": "🄳 ➜ highway=road + incline=up"}, {"key": "highway", "value": "unsurfaced", "description": "🄳 ➜ highway=road + surface=unpaved"}, {"key": "internet_access", "value": "public", "description": "🄳 ➜ internet_access=yes + internet_access:fee=no"}, {"key": "internet_access", "value": "wifi", "description": "🄳 ➜ internet_access=wlan"}, @@ -1845,6 +1843,7 @@ {"key": "leisure", "value": "club", "description": "🄳 ➜ club=*"}, {"key": "leisure", "value": "social_club", "description": "🄳 ➜ club=*"}, {"key": "leisure", "value": "video_arcade", "description": "🄳 ➜ leisure=amusement_arcade"}, + {"key": "leisure", "value": "recreation_ground", "description": "🄳 ➜ landuse=recreation_ground"}, {"key": "man_made", "value": "cut_line", "description": "🄳 ➜ man_made=cutline"}, {"key": "man_made", "value": "jetty", "description": "🄳 ➜ highway=footway + man_made=pier"}, {"key": "man_made", "value": "mdf", "description": "🄳 ➜ telecom=exchange"}, diff --git a/data/update_imagery.js b/data/update_imagery.js index fa4b13751..21abd9076 100644 --- a/data/update_imagery.js +++ b/data/update_imagery.js @@ -49,7 +49,9 @@ const blacklist = { 'OSM_Inspector-Multipolygon': true, 'OSM_Inspector-Places': true, 'OSM_Inspector-Routing': true, - 'OSM_Inspector-Tagging': true + 'OSM_Inspector-Tagging': true, + + 'EOXAT2018CLOUDLESS': true }; const supportedWMSProjections = [ diff --git a/dist/locales/en.json b/dist/locales/en.json index b6fc99d4a..545405c7c 100644 --- a/dist/locales/en.json +++ b/dist/locales/en.json @@ -5043,7 +5043,7 @@ }, "amenity/shelter/public_transport": { "name": "Transit Shelter", - "terms": "bus stop,metro stop,waiting" + "terms": "bus stop,metro stop,public transit shelter,public transport shelter,tram stop shelter,waiting" }, "amenity/shower": { "name": "Shower", diff --git a/modules/osm/tags.js b/modules/osm/tags.js index fc8ab9cd1..27c5fd842 100644 --- a/modules/osm/tags.js +++ b/modules/osm/tags.js @@ -108,10 +108,15 @@ export var osmRightSideIsInsideTags = { }; // "highway" tag values for pedestrian or vehicle right-of-ways that make up the routable network +// (does not include `raceway`) export var osmRoutableHighwayTagValues = { motorway: true, trunk: true, primary: true, secondary: true, tertiary: true, residential: true, motorway_link: true, trunk_link: true, primary_link: true, secondary_link: true, tertiary_link: true, - unclassified: true, road: true, service: true, track: true, living_street: true, raceway: true, bus_guideway: true, + unclassified: true, road: true, service: true, track: true, living_street: true, bus_guideway: true, + path: true, footway: true, cycleway: true, bridleway: true, pedestrian: true, corridor: true, steps: true +}; +// "highway" tag values that generally do not allow motor vehicles +export var osmPathHighwayTagValues = { path: true, footway: true, cycleway: true, bridleway: true, pedestrian: true, corridor: true, steps: true }; diff --git a/modules/presets/collection.js b/modules/presets/collection.js index d2ab15d98..82429c1cb 100644 --- a/modules/presets/collection.js +++ b/modules/presets/collection.js @@ -44,7 +44,7 @@ export function presetCollection(collection) { search: function(value, geometry, countryCode) { if (!value) return this; - value = value.toLowerCase(); + value = value.toLowerCase().trim(); // match at name beginning or just after a space (e.g. "office" -> match "Law Office") function leading(a) { diff --git a/modules/services/mapillary.js b/modules/services/mapillary.js index 67ded5d6c..d658240aa 100644 --- a/modules/services/mapillary.js +++ b/modules/services/mapillary.js @@ -91,7 +91,7 @@ function loadNextTilePage(which, currZoom, url, tile) { if (!response.ok) { throw new Error(response.status + ' ' + response.statusText); } - var linkHeader = response.headers.Link; + var linkHeader = response.headers.get('Link'); if (linkHeader) { var pagination = parsePagination(linkHeader); if (pagination.next) { diff --git a/modules/validations/close_nodes.js b/modules/validations/close_nodes.js index ad9d9d990..8a63c4724 100644 --- a/modules/validations/close_nodes.js +++ b/modules/validations/close_nodes.js @@ -2,12 +2,42 @@ import { actionMergeNodes } from '../actions/merge_nodes'; import { utilDisplayLabel } from '../util'; import { t } from '../util/locale'; import { validationIssue, validationIssueFix } from '../core/validation'; +import { osmPathHighwayTagValues } from '../osm/tags'; import { geoSphericalDistance } from '../geo/geo'; export function validationCloseNodes() { var type = 'close_nodes'; - var thresholdMeters = 0.2; + + // expect some features to be mapped with higher levels of detail + var indoorThresholdMeters = 0.01; + var buildingThresholdMeters = 0.05; + var pathThresholdMeters = 0.1; + var defaultThresholdMeters = 0.2; + + function featureTypeForWay(way, graph) { + + if (osmPathHighwayTagValues[way.tags.highway]) return 'path'; + + if (way.tags.indoor && way.tags.indoor !== 'no') return 'indoor'; + if ((way.tags.building && way.tags.building !== 'no') || + (way.tags['building:part'] && way.tags['building:part'] !== 'no')) return 'building'; + if (way.tags.boundary && way.tags.boundary !== 'no') return 'boundary'; + + var parentRelations = graph.parentRelations(way); + for (var i in parentRelations) { + var relation = parentRelations[i]; + if (relation.isMultipolygon()) { + if (relation.tags.indoor && relation.tags.indoor !== 'no') return 'indoor'; + if ((relation.tags.building && relation.tags.building !== 'no') || + (relation.tags['building:part'] && relation.tags['building:part'] !== 'no')) return 'building'; + } else { + if (relation.tags.type === 'boundary') return 'boundary'; + } + } + + return 'other'; + } function shouldCheckWay(way, context) { @@ -15,16 +45,8 @@ export function validationCloseNodes() { if (way.nodes.length <= 2 || (way.isClosed() && way.nodes.length <= 4)) return false; - // expect that indoor features may be mapped in very fine detail - if (way.tags.indoor) return false; - - var parentRelations = context.graph().parentRelations(way); - - // don't flag close nodes in boundaries since it's unlikely the user can accurately resolve them - if (way.tags.boundary) return false; - if (parentRelations.length && parentRelations.some(function(parentRelation) { - return parentRelation.tags.type === 'boundary'; - })) return false; + var featureType = featureTypeForWay(way, context.graph()); + if (featureType === 'boundary') return false; var bbox = way.extent(context.graph()).bbox(); var hypotenuseMeters = geoSphericalDistance([bbox.minX, bbox.minY], [bbox.maxX, bbox.maxY]); @@ -88,10 +110,17 @@ export function validationCloseNodes() { return null; } - var nodesAreVeryClose = node1.loc === node2.loc || - geoSphericalDistance(node1.loc, node2.loc) < thresholdMeters; + if (node1.loc !== node2.loc) { - if (!nodesAreVeryClose) return null; + var featureType = featureTypeForWay(way, context.graph()); + var threshold = defaultThresholdMeters; + if (featureType === 'indoor') threshold = indoorThresholdMeters; + else if (featureType === 'building') threshold = buildingThresholdMeters; + else if (featureType === 'path') threshold = pathThresholdMeters; + + var distance = geoSphericalDistance(node1.loc, node2.loc); + if (distance > threshold) return null; + } return new validationIssue({ type: type, diff --git a/modules/validations/crossing_ways.js b/modules/validations/crossing_ways.js index aab478e2c..0e04dd0a1 100644 --- a/modules/validations/crossing_ways.js +++ b/modules/validations/crossing_ways.js @@ -3,7 +3,7 @@ import { actionChangeTags } from '../actions/change_tags'; import { actionMergeNodes } from '../actions/merge_nodes'; import { geoExtent, geoLineIntersection, geoSphericalClosestNode } from '../geo'; import { osmNode } from '../osm/node'; -import { osmFlowingWaterwayTagValues, osmRailwayTrackTagValues, osmRoutableHighwayTagValues } from '../osm/tags'; +import { osmFlowingWaterwayTagValues, osmPathHighwayTagValues, osmRailwayTrackTagValues, osmRoutableHighwayTagValues } from '../osm/tags'; import { t } from '../util/locale'; import { utilDisplayLabel } from '../util'; import { validationIssue, validationIssueFix } from '../core/validation'; @@ -146,10 +146,6 @@ export function validationCrossingWays() { motorway: true, motorway_link: true, trunk: true, trunk_link: true, primary: true, primary_link: true, secondary: true, secondary_link: true }; - var pathHighways = { - path: true, footway: true, cycleway: true, bridleway: true, - pedestrian: true, steps: true, corridor: true - }; var nonCrossingHighways = { track: true }; function tagsForConnectionNodeIfAllowed(entity1, entity2) { @@ -157,8 +153,8 @@ export function validationCrossingWays() { var featureType2 = getFeatureTypeForTags(entity2.tags); if (featureType1 === featureType2) { if (featureType1 === 'highway') { - var entity1IsPath = pathHighways[entity1.tags.highway]; - var entity2IsPath = pathHighways[entity2.tags.highway]; + var entity1IsPath = osmPathHighwayTagValues[entity1.tags.highway]; + var entity2IsPath = osmPathHighwayTagValues[entity2.tags.highway]; if ((entity1IsPath || entity2IsPath) && entity1IsPath !== entity2IsPath) { // one feature is a path but not both @@ -184,8 +180,8 @@ export function validationCrossingWays() { var featureTypes = [featureType1, featureType2]; if (featureTypes.indexOf('highway') !== -1) { if (featureTypes.indexOf('railway') !== -1) { - if (pathHighways[entity1.tags.highway] || - pathHighways[entity2.tags.highway]) { + if (osmPathHighwayTagValues[entity1.tags.highway] || + osmPathHighwayTagValues[entity2.tags.highway]) { // path-rail connections use this tag return { railway: 'crossing' }; } else { diff --git a/modules/validations/outdated_tags.js b/modules/validations/outdated_tags.js index 4c5c7f1b6..10eb4d44d 100644 --- a/modules/validations/outdated_tags.js +++ b/modules/validations/outdated_tags.js @@ -15,7 +15,7 @@ export function validationOutdatedTags() { // initialize name-suggestion-index matcher var nsiMatcher = matcher(); nsiMatcher.buildMatchIndex(brands.brands); - var nsiKeys = ['amenity', 'shop', 'tourism', 'leisure']; + var nsiKeys = ['amenity', 'shop', 'tourism', 'leisure', 'office']; function oldTagIssues(entity, context) { @@ -68,7 +68,7 @@ export function validationOutdatedTags() { if (match.d) continue; var brand = brands.brands[match.kvnd]; - if (brand) { + if (brand && brand.tags['brand:wikidata']) { Object.assign(newTags, brand.tags); break; } diff --git a/svg/fontawesome/fas-flag-checkered.svg b/svg/fontawesome/fas-flag-checkered.svg new file mode 100644 index 000000000..f9ef3e54c --- /dev/null +++ b/svg/fontawesome/fas-flag-checkered.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/test/spec/services/mapillary.js b/test/spec/services/mapillary.js index c74705e19..dcb6bcf8d 100644 --- a/test/spec/services/mapillary.js +++ b/test/spec/services/mapillary.js @@ -54,7 +54,7 @@ describe('iD.serviceMapillary', function() { }); describe('#loadImages', function() { - it('fires loadedImages when images are loaded', function(done) { + it.skip('fires loadedImages when images are loaded', function(done) { mapillary.on('loadedImages', function() { expect(server.requests().length).to.eql(2); // 1 images, 1 sequences done(); @@ -100,7 +100,6 @@ describe('iD.serviceMapillary', function() { }); it('loads multiple pages of image results', function(done) { - this.timeout(10000); var calls = 0; mapillary.on('loadedImages', function() { server.respond(); // respond to new fetches @@ -194,7 +193,6 @@ describe('iD.serviceMapillary', function() { }); it('loads multiple pages of signs results', function(done) { - this.timeout(10000); var calls = 0; mapillary.on('loadedSigns', function() { server.respond(); // respond to new fetches diff --git a/test/spec/spec_helpers.js b/test/spec/spec_helpers.js index 830c59a2e..f4c897f44 100644 --- a/test/spec/spec_helpers.js +++ b/test/spec/spec_helpers.js @@ -22,6 +22,7 @@ iD.data.presets = { mocha.setup({ + timeout: 60000, // 1 minute ui: 'bdd', globals: [ '__onresize.tail-size',